#include <bits/stdc++.h>
using namespace std;
int n;
vector<string> w;
vector<int> cnt;
int best = 0;
int overlap(const string& a, const string& b) {
int len = min(a.size(), b.size());
for (int k = 1; k < len; k++) {
bool ok = true;
for (int i = 0; i < k; i++) {
if (a[a.size() - k + i] != b[i]) { ok = false; break; }
}
if (ok) return k;
}
return 0;
}
void dfs(const string& cur) {
best = max(best, (int)cur.size());
for (int i = 0; i < n; i++) {
if (cnt[i] >= 2) continue;
int k = overlap(cur, w[i]);
if (k == 0) continue;
cnt[i]++;
dfs(cur + w[i].substr(k));
cnt[i]--;
}
}
int main() {
cin >> n;
w.resize(n);
cnt.assign(n, 0);
for (int i = 0; i < n; i++) cin >> w[i];
char start;
cin >> start;
for (int i = 0; i < n; i++) {
if (w[i][0] == start) {
cnt[i]++;
dfs(w[i]);
cnt[i]--;
}
}
cout << best << endl;
return 0;
}