#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
int n,maxx,sum,siz[30];
string a[30];
char start;
int vis[30],mem[30][30];
int chong(int posa,int posb){
string ta=a[posa],tb=a[posb];
int lena=siz[posa],lenb=siz[posb],minlen=min(lena,lenb);
for(int i=1;i<=minlen;i++){
bool f=1;
for(int j=1;j<=i;j++){
if(ta[lena-j]!=tb[i-j]){
f=0;
break;
}
}
if(f) return i==minlen?-1:i;
}
return 0;
}
void dfs(int pos){
bool f=0;
vis[pos]++;
sum+=siz[pos];
for(int i=0;i<n;i++){
if(vis[i]>=2||mem[pos][i]<=0) continue;
f=1;
sum-=mem[pos][i];
sum+=siz[pos]-mem[pos][i];
dfs(i);
sum+=mem[pos][i];
}
sum-=siz[pos];
vis[pos]--;
if(!f){
maxx=max(maxx,sum);
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
siz[i]=a[i].size();
}
cin>>start;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
mem[i][j]=chong(i,j);
}
}
for(int i=0;i<n;i++){
if(a[i][0]==start){
sum=siz[i];
vis[i]++;
dfs(i);
vis[i]--;
}
}
cout<<maxx;
return 0;
}
调了好长时间,心态炸裂了,绝对是一些低级错误,但是我找不出来(哭)
谢谢大家了