#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = 30;
int n,ans,vis[maxn];
string a[maxn];
int getOverlap(string a, string b) {
int len = min(a.size(), b.size());
for(int l = 1; l < len; l++) {
if(a.substr(a.size()-l) == b.substr(0,l))
return l;
}
return 0;
}
void dfs(int x,int sum){
ans = max(ans,sum);
for(int i = 1;i <= n;i++){
char now = a[x].back();
int overlap = getOverlap(a[x], a[i]);
if(overlap > 0 && overlap < min(a[x].size(), a[i].size())){
if(vis[i] < 2){
vis[i];
dfs(i, sum + a[i].size() - overlap);
vis[i]--;
}
}
}
}
int main(){
char fir;
cin >> n;
for(int i = 1;i <= n;i) cin >> a[i];
cin >> fir;
for(int i = 1;i <= n;i++){
if(a[i][0] == fir){
vis[i]++;
dfs(i,a[i].size());
vis[i]--;
}
}
cout << ans;
return 0;
}