#include <bits/stdc++.h>
#define SIZE 1000005
#define ALP 30
using namespace std;
typedef long long int ll;
typedef pair <ll,ll> P;

struct trie
{
	vector <char> ch;
	vector <trie*> nd;
	bool end;
	trie(bool end=false):end(end){}
};
trie root;
char str[SIZE];
string S[SIZE];
int cnt[ALP];

int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%s",&str);
		S[i]=str;
		reverse(S[i].begin(),S[i].end());
		trie *at=&root;
		for(int j=0;j<S[i].size();j++)
		{
			int pos=-1;
			for(int k=0;k<at->ch.size();k++) if(at->ch[k]==S[i][j]) pos=k;
			if(pos==-1)
			{
				pos=at->ch.size();
				at->ch.push_back(S[i][j]);
				at->nd.push_back(new trie());
			}
			at=at->nd[pos];
		}
		at->end=true;
	}
	int ret=0;
	for(int i=0;i<n;i++)
	{
		memset(cnt,0,sizeof(cnt));
		for(int j=0;j<S[i].size();j++) cnt[S[i][j]-'a']++;
		trie *at=&root;
		for(int j=0;j<S[i].size();j++)
		{
			int pos=-1;
			for(int k=0;k<at->ch.size();k++)
			{
				if(at->nd[k]->end)
				{
					int c=at->ch[k]-'a';
					if(cnt[c]>0) ret++;
				}
				if(at->ch[k]==S[i][j]) pos=k;
			}
			cnt[S[i][j]-'a']--;
			at=at->nd[pos];
		}
	}
	printf("%d\n",ret-n);
}