#include<iostream>
#include<cmath>
#include<map>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
int n;
char t;
int book[21];
int maxx=-1;
string a[21];
int pp(string a,string b){
for(int i=a.length()-1;i>=0;i--){
if(a[i]==b[0]){
int tt=0;
bool pd=true;
for(int j=i;j<=a.length();j++){
if(a[i]!=b[tt]){
pd=false;
break;
}
}
if(pd&&i){
return a.length()-i+1;
}
}
}
return 0;
}
void dfs(int len,string p,int num){
if(num==n+1){
max=x=max(maxx,p.length());
return;
}
for(int i=1;i<=n;i++){
if(!book[i]){
book[i]=1;
int len=pp(p,a[i]);
for(int j=len;j<=a[i].length()-1;j++){
p=p+a[i][j];
}
dfs(p.length(),p,num+1);
book[i]=0;
}
}
return;
}
int main(){
cin >>n;
for(int i=1;i<=n;i++){
cin >>a[i];
}
cin >>t;
for(int i=1;i<=n;i++){
if(a[i][0]==t){
book[i]=1;
dfs(a[i].length(),a[i],1);
}
}
cout <<maxx;
return 0;
}