#include <bits/stdc++.h>
using namespace std;
int n;
string s[100], l;
bool vis[100];
char c;
int ans = 0;
string pd2(string s, string t)
{
if (s.size() > t.size() && s.substr(s.size() - t.size()) == t ||
s.size() < t.size() && t.substr(0, s.size()) == s || s == t)
return "";
for (int i = 1; i < s.size() - 1; i++)
if (s.substr(s.size() - i) == t.substr(0, i))
return s + t.substr(i);
return "";
}
string pd(string s, string t)
{
string ss = "", tt = "";
for (int i = 1; i < s.size(); i++)
{
for (int j = 1; j < t.size(); j++)
{
if (s.substr(i) == t.substr(0, j))
{
tt = s + t.substr(j);
if (tt.size() > ss.size())
ss = tt;
}
}
}
if (ss.size() > s.size() && ss.size() > t.size())
return ss;
return "";
}
void dfs(string str)
{
if (ans < str.size())
{
ans = str.size();
// cout<<str<<endl;
}
for (int i = 0; i < 2 * n; i++)
{
l = pd(str, s[i]);
if (!vis[i] && l != "")
{
vis[i] = true;
dfs(l);
vis[i] = false;
}
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s[i];
s[n + i] = s[i];
}
cin >> c;
for (int i = 0; i < 2 * n; i++)
{
if (c == s[i][0])
{
vis[i] = true;
dfs(s[i]);
vis[i] = false;
}
}
cout << ans;
return 0;
}