#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=1e2+10;
string s[N];
int n;
char Kaitou;
ll fh;
int f[N];
ll ans,maxa,t;
bool check(int u,int v)
{
int ct;
down(i,(int)s[u].length()-1,1,1){
if(s[u][i]==s[v][0]){
ct=0;
up(j,i+1,(int)s[u].length()-1,1){
ct++;
if(s[u][j]!=s[v][ct]){
return false;
}
}
fh=s[v].length()-(ct+1);
return true;
}
}
return false;
}
inline void dfs(int u)
{
up(i,1,n,1){
if(f[i]<2 && check(u,i)){
ans+=fh;
f[i]++;
dfs(i);
f[i]--;
ans-=fh;
}
}
t=max(t,ans);
return;
}
void solve()
{
cin>>n;
up(i,1,n,1){
cin>>s[i];
}
cin>>Kaitou;
up(i,1,n,1){
if(s[i][0]==Kaitou){
ans=s[i].length();
f[i]++;
dfs(i);
f[i]--;
maxa=max(maxa,t);
}
}
cout<<maxa;
return;
}
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);
//freopen("champion.in.in","r",stdin);
//freopen("champion.out.out","w",stdout);
int _=1;
//cin>>_;
up(i,1,_,1){
solve();
}
return 0;
}
测试点输入:
6
many
youth
this
system
main
navy
m
输出:
38