#include<bits/stdc++.h>
using namespace std;
const int N=25;
int n,length;
int vis[N];
string str[N];
inline int check(string x,string y)
{
int len=min(x.size(),y.size());
for(int i=1;(x.size()==1)?(i<=len):(i<len);i++)
{
bool flag=true;
for(int j=0;j<i;j++)
{
if(x[x.size()+j-i]!=y[j])
{
flag=false;
break;
}
}
if(flag) return i;
}
return 0;
}
void dfs(string s,int length_now)
{
length=max(length,length_now);
for(int i=1;i<=n;i++)
{
if(vis[i]>1) continue;
int add=check(s,str[i]);
if(add)
{
vis[i]++;
dfs(str[i],length_now+str[i].size()-add);
vis[i]--;
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) cin>>str[i];
cin>>str[n+1];
dfs(str[n+1],1);
printf("%d",length);
return 0;
}
知识兔