// clang-format off
#include<bits/stdc++.h>
#define pb push_back
#define p make_pair
#define st first
#define nd second
#define bit(s,x) (((s)>>(x))&1)
#define ctz(s) __builtin_popcount(s)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
//typedef __int128 i128;
typedef long double ld;
typedef pair<int,int> pii; typedef pair<ll,int> pli; typedef pair<ll,ll> pll; typedef pair<int,ll> pil;
inline ll read(){
ll x=0,f=1,c=getchar();
while(c<'0'||c>'9')f=(c=='-'?-1:1),c=getchar();
while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x*f;
}
inline void write(ll x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0'); }
// remember to change!!!
const int mod=998244353;
inline void plust(int &x,int y,int p=mod){x=x+y<p?x+y:x+y-p;}
inline void mul(int &x,int y,int p=mod){x=1ll*x*y%p;}
inline int fp(int x,ll p=mod-2,int m=mod,int res=1){
for(;p;p>>=1){if(p&1)mul(res,x,m);mul(x,x,m);}
return res;
}
const int n=1e6+3;
const int inf=0x3fffffff;
// clang-format on
int n;
string str[n];
int fa[n],tot=1,lst,cur,nxt[n][26],len[n];
inline void init(){
lst=0,cur=-1;
len[0]=0,len[1]=-1;
fa[0]=1,fa[1]=0;
}
inline int getfail(int i,int x){
for(;cur-len[x]-1 <0 || str[i][cur-len[x]-1] != str[i][cur];x=fa[x]);
return x;
}
inline void insert(int i,int c){
++cur;int p=getfail(i,lst);
if(!nxt[p][c]){
int x = ++tot;len[x] = len[p] + 2;
fa[x] = nxt[getfail(i,fa[p])][c];
nxt[p][c]=x;
}
lst=nxt[p][c];
}
vector<int>g[n];
int vis[n];
vector<int>vec[n];
int t2[n];
inline void dfs(int u){
vis[len[u]]=u;
for(auto x:vec[len[u]])if(vis[len[u]-x]){++t2[vis[x]];break;}
for(auto v:g[u])dfs(v);
vis[len[u]]=0;
}
int main() {
//freopen("data.in", "r", stdin);
// freopen(".in","r",stdin);
// freopen("myans.out","w",stdout);
n=read();
for(int i=1;i<=n;++i)cin>>str[i];
for(int i=1;i<=n;++i){
init();
for(int j=0;j<str[i].length();++j){
insert(i,str[i][j]-'a');
}
}
for(int i=2;i<=tot;++i)g[fa[i]?fa[i]:1].pb(i);
for(int i=1;i<n;++i) for(int j=i;j<n;j+=i)vec[j].pb(i);
vis[0]=1;for(auto u:g[1])dfs(u);
ll ans=0;
for(int i=2;i<=tot;++i)ans += 1ll*t2[i]*t2[i];
cout<<ans;
return 0;
}