#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 200010
#define ll long long

int n,len[maxn],t[maxn];
string s[maxn];
struct node{
	int t[26];
	node *son[26];
	node(){for(int i=0;i<26;i++)t[i]=0,son[i]=NULL;}
}*root=new node();
void insert(string &S,int &l){
	for(int i=0;i<l;i++)t[S[i]-'a']++;
	node *now=root;
	for(int i=l-1;i>=0;i--){
		for(int j=0;j<26;j++)if(t[j])now->t[j]++;
		if(!now->son[S[i]-'a'])now->son[S[i]-'a']=new node();
		now=now->son[S[i]-'a'];t[S[i]-'a']--;
	}
}
ll ans=0;

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i];len[i]=s[i].length();
		insert(s[i],len[i]);
	}
	for(int i=1;i<=n;i++){
		node *now=root;
		for(int j=len[i]-1;j>=1;j--)now=now->son[s[i][j]-'a'];
		ans+=now->t[s[i][0]-'a']-1;
	}
	cout<<ans;
}