#include<iostream>
#include <string>
using namespace std;
int n;
bool vis[101];
string a[101];
char beg;
long long ret(string a,string b){
long long size=min(a.size(),b.size());
for(long long i=1;i<=size;i++){//
if(a.substr(a.size()-i,a.size()-1)==b.substr(0,i)){
if(i==size) return -1;
return i;
}
}
return 0;
}
long long dfs(int j){
long long iMax=-1;
bool flag=false;
for(int i=1;i<=n;i++)
if(ret(a[j],a[i])!=-1&&vis[i]<2) {
vis[i]++;
iMax=max(iMax,(long long)a[i].size()-ret(a[j],a[i])+dfs(i)),flag=true;
vis[i]-=1;
}
if(flag==false) return 0;
return iMax;
}
long long solve(){
long long iMax=-1;
for(int i=1;i<=n;i++){
if(a[i][0]==beg) iMax=max(iMax,dfs(i)+(long long)a[i].size());
}
return iMax;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>beg;
cout<<solve();
return 0;
}