#include<iostream>
#include<string>
using namespace std;
string s[25];
int vis[25];
int ans,n;
int find(string s1,string s2){
int len1=s1.size(),len2=s2.size();
for(int i=min(len1,len2);i>=1;i--){
int flag=1;
for(int j=i-1;j>=0;j--){
if(s1[len1-i+j]!=s2[j]){
flag=0;
break;
}
}
if(flag==1)return i;
}
return 0;
}
void dfs(string str,int len) {
ans=max(ans,len);
for(int i=0;i<n;i++) {
if(vis[i]>=2)continue;
int t=find(str,s[i]);
if(t>0){
vis[i]++;
dfs(s[i],len+s[i].length()-t);
vis[i]--;
}
}
}
int main(){
cin>>n;
for(int i=0;i<=n;i++){
cin>>s[i];
}
dfs(s[n],1);
cout<<ans;
return 0;
}
前三WA,后三AC