rt,不知道哪里错了
#include<bits/stdc++.h>
using namespace std;
int n,ans,now,cov[25][25];
string word[25];
char a;
int vis[25];
int link(int x,int y){
int n1=word[x].size();
int n2=word[y].size();
int cur=0;
int t=0;
while(t==0&&cur<n1&&cur<n2){
cur++;
string a1=word[x].substr(n1-cur,cur);
string b1=word[y].substr(0,cur);
if(a1==b1){
t=1;
}
}
if(cur==n1||cur==n2){
return 0;
}
return cur;
}
void dfs(int pre){
int t=0;
for(int i=1;i<=n;i++){
if(cov[pre][i]==0){
continue;
}
if(vis[i]>=2){
continue;
}
now+=word[i].size()-cov[i][pre];
vis[i]++;
t=1;
dfs(i);
now+=cov[i][pre]-word[i].size();
vis[i]--;
}
if(t==0){
ans=max(ans,now);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>word[i];
}
cin>>a;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cov[i][j]=link(i,j);
}
}
for(int i=1;i<=n;i++){
if(word[i][0]==a){
vis[i]++;
now=word[i].size();
dfs(i);
vis[i]=0;
}
}
cout<<ans;
return 0;
}