#include <iostream>
#include <string>
using namespace std;
int n;
int ans = 0;
struct node {
char str[100];
int lon = 0;
char start = 0;
char end = 0;
int flag = 0;
} a[100001] = {0};
void dfs(int x, int now) {
if (now > ans) {
ans = now;
}
for (int i = 1; i <= n; i++) {
if (a[i].start == a[x].end && a[i].flag == 0) {
a[i].flag = 1;
dfs(i, now + a[i].lon);
a[i].flag = 0;
}
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
string tz;
cin >> tz;
for (int j = 0; j < tz.length(); j++) {
a[i].str[j] = tz[j];
}
a[i].lon = tz.size();
a[i].start = a[i].str[0];
a[i].end = a[i].str[a[i].lon - 1];
}
for (int i = 1; i <= n; i++) {
if (a[i].flag == 0) {
a[i].flag = 1;
dfs(i, a[i].lon);
a[i].flag = 0;
}
}
cout << ans;
return 0;
}