#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int N =22;
int n;
string word[N];
int g[N][N]; //表示第i个和第j个单词的公共部分长度
int used[N]; //第i个单词使用次数
int ans;
void dfs(string drogan,int last) //递归搜索以编号i为last结尾的情况
{
ans=max((int)drogan.size(),ans);
used[last]++;
for(int i=0;i<n;i++)
{
if(used[i]<2 && g[last][i])
dfs(drogan+word[i].substr(g[last][i]),i);
}
used[last]--; //回溯
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>word[i];
char start;
cin>>start;
for(int i=0;i<n;i++) //遍历所有单词的两两组合,找到每个组合的公共长度
for(int j=0;j<n;j++)
{
string a=word[i];
string b=word[j];
for(int k=1;k<(int)min(a.length(),b.length());k++)
{
if(a.substr(a.size()-k,k)==b.substr(0,k))
{
g[i][j]=k;
break;
}
}
}
for(int i=0;i<n;i++)
if(start==word[i][0])
dfs(word[i],i);
cout<<ans<<endl;
return 0;
}