#include<iostream>
#include<string>
#include<memory.h>
#include<fstream>
using namespace std;
const int MAXN=21;
int a[MAXN][MAXN],b[MAXN][MAXN],d[MAXN];
int m,n,ans=0;
string w[MAXN];
char c;
void findadj()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
int l1=w[i].length(),l2=w[j].length();
int k=0;
while(k<l1-1&&k<l2-1){
k++;
if(w[i].substr(l1-k,k)==w[j].substr(0,k)){
a[i][j]=1;
b[i][j]=k;
break;
}
}
}
}
void search(int i,int len)
{
if(ans<len)ans=len;
for(int j=1;j<=n;++j)
if (a[i][j]>0&&d[j]){
d[j]--;
search(j,len+w[j].length()-b[i][j]);
d[j]++;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i) cin>>w[i];
cin>>c;
findadj();
for(int i=1;i<=n;++i)
if(w[i][0]==c){
for(int j=1;j<=n;j++)d[j]=2;
d[i]--;
search(i,w[i].length());
}
cout<<ans<<endl;
return 0;
}