#include<bits/stdc++.h>
using namespace std;
int a[21][21],n;
char b;
int ans=0;
string word[114]={};
int vi[114]={};
int check(string begin,string end){
int lena = begin.length();
int lenb = end.length();
for(int i=1;i<lena&&i<lenb;i++){
for(int j=0;j<i;j++){
if (begin[lena-i+j] != end[j]) continue;
if(j==i-1) return lenb-i;
}
}
return -1;
}
void dfs(int len,int begin){
ans = len > ans?len:ans;
for(int i=1;i<=n;i++){
if (vi[i] < 2 && a[begin][i] != -1) {
vi[i] += 1;
dfs(len + a[begin][i],i);
vi[i] -= 1;
}
}
return;
}
int main(){
memset(a,-1,sizeof(a));
cin>>n;
for(int i=1;i<=n;i++) cin>>word[i];
cin>>b;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=check(word[i],word[j]);
}
}
for(int i=1;i<=n;i++) {
if (word[i][0]==b) {
vi[i] += 1;
dfs(word[i].length(),i);
vi[i] -= 1;
}
}
cout<<ans;
return 0;
}