#include<iostream>
using namespace std;
const int N = 20;
string g[N];
int n;
int maxv;
int st[N];
void dfs(const string &s, int len, int u){
for(int i = 0; i < n; i ++){
if(st[i]){
st[i] --;
int cnt = 0;
for(int j = 0; j < g[i].size(); j ++)
if(g[i][j] == s.back()){
cnt = j + 1;
break;
}
for(int j = s.size() - cnt, k = 0; j < s.size(); j ++, k ++)
if(s[j] != g[i][k]){
cnt = 0;
break;
}
if(cnt && (cnt < s.size() && cnt < g[i].size() || u == 0))
dfs(s + g[i].substr(cnt), s.size() + g[i].size() - cnt, u + 1);
st[i] ++;
}
}
maxv = max(maxv, len);
}
int main(){
cin >> n;
for(int i = 0; i < n; i ++){
cin >> g[i];
st[i] = 2;
}
string a;
cin >> a;
dfs(a, 0, 0);
cout << maxv << endl;
}