#include <iostream>
#include <string>
using namespace std;
int n;
string s[25];
string st;
int ans;
int vis[25];
int checklink (string a, string b) {
for (int i = 1; i < min(a.length(), b.length()); ++i) {
bool flag = 1;
for (int j = 0; j < i; ++j) {
if (a[a.length() - i + j] != b[j]) {
flag = 0;
}
}
if(flag) return i;
}
return 0;
}
void dfs (string now, int lnow) {
ans = max(lnow, ans);
for (int i = 0; i <= n; ++i) {
if (vis[i] >= 2) {
continue;
}
int leng = checklink(now, s[i]);
if (leng > 0) {
vis[i] ++;
dfs(s[i], lnow + s[i].length() - leng);
vis[i] --;
}
}
}
int main () {
cin >> n;
for (int i = 0; i <= n; ++i) {
cin >> s[i];
}
vis[0] = 1;
dfs(s[0], s[0].length());
cout << ans;
return 0;
}