#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;
const long long oo=1e18;
const int mod=1e9+7;
const int base=31;
int Test=1;
void home()
{
if(fopen("main.inp","r"))
freopen("main.inp","r",stdin),
freopen("main.out","w",stdout);
}
bool bit(int mask,int i){return (mask>>i)&1;}
int n,kq;
string s[100005];
int mu[1000006],hX[1000006],hN[1000006];
void BuildHash(string s)
{
hX[0]=hN[s.size()]=0;
for(int i=1;i<s.size();i++)hX[i]=(hX[i-1]*base+(s[i]-'a'+1))%mod;
for(int i=s.size()-1;i>=1;i--)hN[i]=(hN[i+1]*base+(s[i]-'a'+1))%mod;
}
int GetX(int j,int i)
{
return (hX[i]-hX[j-1]*mu[i-j+1]%mod+mod)%mod;
}
int GetN(int j,int i)
{
return (hN[j]-hN[i+1]*mu[i-j+1]%mod+mod)%mod;
}
bool PalinCheck(int j,int i)
{
return GetN(j,i)==GetX(j,i);
}
struct Trie
{
struct Node
{
Node *child[26];int en,pal;
Node()
{
for(int i=0;i<26;i++)child[i]=NULL;
en=0;pal=0;
}
};
Node *root;Trie(){root=new Node();}
void Insert(string s)
{
Node *p=root;
for(int i=s.size()-1;i>=1;i--)
{
int c=s[i]-'a';
if(p->child[c]==NULL)p->child[c]=new Node();
p=p->child[c];
if(i>1)p->pal+=PalinCheck(1,i-1);
}
p->en++;
}
void CntPalin(string s)
{
Node *p=root;
for(int i=1;i<s.size();i++)
{
int c=s[i]-'a';
if(p->child[c]==NULL)return;
p=p->child[c];
kq+=p->en*PalinCheck(i+1,s.size()-1);
}
kq+=p->pal;
}
}*T;
void Tcmduc_VOI26()
{
cin>>n;
T=new Trie();
mu[0]=1;for(int i=1;i<=1000000;i++)mu[i]=(mu[i-1]*base)%mod;
for(int i=1;i<=n;i++)
{
cin>>s[i];s[i]=' '+s[i];BuildHash(s[i]);
T->Insert(s[i]);
}
for(int i=1;i<=n;i++)
{
BuildHash(s[i]);
T->CntPalin(s[i]);
if(PalinCheck(1,s[i].size()-1))kq--;
//cout<<kq<<'\n';
}
cout<<kq;
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);home();
while(Test--)Tcmduc_VOI26();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxvbmcgbG9uZyBvbz0xZTE4Owpjb25zdCBpbnQgbW9kPTFlOSs3Owpjb25zdCBpbnQgYmFzZT0zMTsKaW50IFRlc3Q9MTsKdm9pZCBob21lKCkKewogICAgaWYoZm9wZW4oIm1haW4uaW5wIiwiciIpKSAKICAgIGZyZW9wZW4oIm1haW4uaW5wIiwiciIsc3RkaW4pLAogICAgZnJlb3BlbigibWFpbi5vdXQiLCJ3IixzdGRvdXQpOwp9CmJvb2wgYml0KGludCBtYXNrLGludCBpKXtyZXR1cm4gKG1hc2s+PmkpJjE7fQppbnQgbixrcTsKc3RyaW5nIHNbMTAwMDA1XTsKaW50IG11WzEwMDAwMDZdLGhYWzEwMDAwMDZdLGhOWzEwMDAwMDZdOwp2b2lkIEJ1aWxkSGFzaChzdHJpbmcgcykKewogICAgaFhbMF09aE5bcy5zaXplKCldPTA7CiAgICBmb3IoaW50IGk9MTtpPHMuc2l6ZSgpO2krKyloWFtpXT0oaFhbaS0xXSpiYXNlKyhzW2ldLSdhJysxKSklbW9kOwogICAgZm9yKGludCBpPXMuc2l6ZSgpLTE7aT49MTtpLS0paE5baV09KGhOW2krMV0qYmFzZSsoc1tpXS0nYScrMSkpJW1vZDsKfQppbnQgR2V0WChpbnQgaixpbnQgaSkKewogICAgcmV0dXJuIChoWFtpXS1oWFtqLTFdKm11W2ktaisxXSVtb2QrbW9kKSVtb2Q7Cn0KaW50IEdldE4oaW50IGosaW50IGkpCnsKICAgIHJldHVybiAoaE5bal0taE5baSsxXSptdVtpLWorMV0lbW9kK21vZCklbW9kOwp9CmJvb2wgUGFsaW5DaGVjayhpbnQgaixpbnQgaSkKewogICAgcmV0dXJuIEdldE4oaixpKT09R2V0WChqLGkpOwp9CnN0cnVjdCBUcmllCnsKICAgIHN0cnVjdCBOb2RlCiAgICB7CiAgICAgICAgTm9kZSAqY2hpbGRbMjZdO2ludCBlbixwYWw7CiAgICAgICAgTm9kZSgpCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGk9MDtpPDI2O2krKyljaGlsZFtpXT1OVUxMOwogICAgICAgICAgICBlbj0wO3BhbD0wOwogICAgICAgIH0KICAgIH07CiAgICBOb2RlICpyb290O1RyaWUoKXtyb290PW5ldyBOb2RlKCk7fQogICAgdm9pZCBJbnNlcnQoc3RyaW5nIHMpCiAgICB7CiAgICAgICAgTm9kZSAqcD1yb290OwogICAgICAgIGZvcihpbnQgaT1zLnNpemUoKS0xO2k+PTE7aS0tKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGM9c1tpXS0nYSc7CiAgICAgICAgICAgIGlmKHAtPmNoaWxkW2NdPT1OVUxMKXAtPmNoaWxkW2NdPW5ldyBOb2RlKCk7CiAgICAgICAgICAgIHA9cC0+Y2hpbGRbY107CiAgICAgICAgICAgIGlmKGk+MSlwLT5wYWwrPVBhbGluQ2hlY2soMSxpLTEpOwogICAgICAgIH0KICAgICAgICBwLT5lbisrOwogICAgfQogICAgdm9pZCBDbnRQYWxpbihzdHJpbmcgcykKICAgIHsKICAgICAgICBOb2RlICpwPXJvb3Q7CiAgICAgICAgZm9yKGludCBpPTE7aTxzLnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgYz1zW2ldLSdhJzsKICAgICAgICAgICAgaWYocC0+Y2hpbGRbY109PU5VTEwpcmV0dXJuOwogICAgICAgICAgICBwPXAtPmNoaWxkW2NdOwogICAgICAgICAgICBrcSs9cC0+ZW4qUGFsaW5DaGVjayhpKzEscy5zaXplKCktMSk7CiAgICAgICAgfQogICAgICAgIGtxKz1wLT5wYWw7CiAgICB9Cn0qVDsKdm9pZCBUY21kdWNfVk9JMjYoKQp7CiAgICBjaW4+Pm47CiAgICBUPW5ldyBUcmllKCk7CiAgICBtdVswXT0xO2ZvcihpbnQgaT0xO2k8PTEwMDAwMDA7aSsrKW11W2ldPShtdVtpLTFdKmJhc2UpJW1vZDsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGNpbj4+c1tpXTtzW2ldPScgJytzW2ldO0J1aWxkSGFzaChzW2ldKTsKICAgICAgICBULT5JbnNlcnQoc1tpXSk7CiAgICB9CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBCdWlsZEhhc2goc1tpXSk7CiAgICAgICAgVC0+Q250UGFsaW4oc1tpXSk7CiAgICAgICAgaWYoUGFsaW5DaGVjaygxLHNbaV0uc2l6ZSgpLTEpKWtxLS07CiAgICAgICAgLy9jb3V0PDxrcTw8J1xuJzsKICAgIH0KICAgIGNvdXQ8PGtxOwp9CnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApO2hvbWUoKTsKICAgIHdoaWxlKFRlc3QtLSlUY21kdWNfVk9JMjYoKTsKICAgIHJldHVybiAwOwp9