#include <iostream>
#include<algorithm>
using namespace std;
string a[21];
int n;
char oj;
string dargon;
int a1[21];//记录是否被占用
int leng[21];//记录贡献长度
int sum;//记录当前总长度
int max1;//记录最大值
void add(int x)
{
for (int i = 1;i <= n;i++)
{
if (a1[i] <2)
{
int s = 0;
for (int j = 1;j <= min(a[i].size(), a[x].size());j++)
{
string x1 = a[i].substr(0,j);
string x2 = a[x].substr(a[x].size() - j, j);
if (x1 == x2)
{
s=j;
}
}
if (s != 0)
{
a1[i] ++;//已被占用
int leng1 = a[i].size() - s;
dargon += a[i].substr(s, leng1);//将后续字串加入到大字符串中
leng[i] += leng1;//记录当前串的贡献值
sum += leng1;
max1 = max(max1, sum);
add(i);//进入下一个字符串的查找
a1[i] --;//取消占用
sum -= leng1;
leng[i] -= leng1;//去除长度贡献
while (leng1--)
dargon.pop_back();//去除尾部字串
}
}
}
}
int main()
{
cin >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
cin >> oj;
for (int i = 1;i <= n;i++)
if(a[i].front()==oj)
{
a1[i] ++;
dargon = a[i];
leng[i] = a[i].size();
sum += a[i].size();
add(i);
a1[i] --;
dargon.clear();
leng[i] = 0;
sum -= a[i].size();
}
cout << max1;
}