#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int n;
const int N=30,M=1010;
char a[N][M];
int vis[N];
int ans,l[N];
inline int check(int x,int y) {
int minl=min(l[x],l[y]);
//printf("A");
int res=-1;
for(int i=1;i<=minl;i++) {
bool flag=true;
for(int j=l[x]-i,k=0;j<l[x]&&k<l[y]&&flag;j++,k++) {
if(a[x][j]!=a[y][k]) {
flag=false;
}
}
if(flag) {
res=i;
break;
}
}
if(res==minl&&x!=0&&y!=0) {
return -1;
}
//printf("%d",res);
return res;
}
void dfs(int k,int len) {
ans=max(ans,len);
for(int i=1;i<=n;i++) {
if(vis[i]==2) {
continue;
}
int x=check(k,i);
if(x>-1) {
vis[i]++;
dfs(i,len+l[i]-x);
vis[i]--;
}
}
}
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%s",a[i]);
l[i]=strlen(a[i]);
}
getchar();
scanf("%c",&a[0][0]);
l[0]=1;
dfs(0,1);
printf("%d",ans);
return 0;
}