include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,length=0,vis[1000]={0};string str[1000];
inline int check(string a,string b)
{
int p=min(a.length(),b.length());
for(int i=1;a.length()==1? i<=p:i<p;i++)
{
bool flag=true;
for(int j=0;j<i;j++)
{
if(a[a.length()-i+j]!=b[j])
{
flag=false;
break;
}
}
if(flag==true) 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;
else
{
int add=check(s,str[i]);
if(add!=0)
{
vis[i]++;
dfs(str[i],length_now+str[i].length()-add);
vis[i]--;
}
}
}</cmath></cstring></iostream>

}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>str[i];
cin>>str[n+1];
dfs(str[n+1],1);
cout<<length<<endl;
return 0;
}