#include <bits/stdc++.h>
using namespace std;
int read() {
int res = 0;
bool f = false;
char temp = getchar();
for (; !isdigit(temp); temp = getchar()) f = temp == '-';
for (; isdigit(temp); temp = getchar()) res = res * 10 + temp - '0';
if (f) return -res;
return res;
}
char gc() {
char temp = getchar();
while (temp == '\n' || temp == '\r' || temp == ' ') temp = getchar();
return temp;
}
constexpr int maxn = 2e7 + 5;
char line[maxn];
int trie[maxn][26], cnt = 1, pos[maxn], cc[maxn], tot[maxn];
int dfs(int u, const int c) {
int res = tot[trie[u][c]];
for (int v: trie[u]) {
if (!v) continue;
res += dfs(v, c);
}
return res;
}
int main() {
int n = read();
for (int i = 1; i <= n; i++) {
scanf("%s", line + 1);
int len = strlen(line + 1);
int it = 1;
for (int j = len; j > 1; j--) {
int v = line[j] - 'a';
if (!trie[it][v]) trie[it][v] = ++cnt;
it = trie[it][v], ++tot[it];
}
{
int v = line[1] - 'a';
pos[i] = it, cc[i] = v;
if (!trie[it][v]) trie[it][v] = ++cnt;
it = trie[it][v], ++tot[it];
}
}
int ans = 0;
for (int i = 1; i <= n; i++)
ans += dfs(pos[i], cc[i]);
cout << ans - n;
return 0;
}