#include<bits/stdc++.h>
using namespace std;
int n;
string str[50];
int len[50];
char dragon[10000];
char dragoncopy[10000];
int dragonlen;
bool used[50];
int ans;
void dfs()
{
bool found=0;
for(int i=1;i<=n;i++)
{
if(!used[i])
{
for(int j=0;j<=min(dragonlen,len[i]);j++)
{
bool good=1;
for(int k=dragonlen;k>=dragonlen-j;k--)
{
if(dragon[k]!=str[i][k-dragonlen+j])
{
good=0;
break;
}
}
if(good)
{
for(int i=1;i<=dragonlen;i++)
{
dragoncopy[i]=dragon[i];
}
for(int k=dragonlen+1;k<=dragonlen+len[i]-j-1;k++)
{
dragon[k]=str[i][k-dragonlen+j];
}
found=1;
used[i]=1;
dragonlen+=len[i]-j-1;
dfs();
dragonlen-=len[i]-j-1;
for(int i=1;i<=dragonlen;i++)
{
dragon[i]=dragoncopy[i];
}
}
}
}
}
if(found==0)
{
ans=max(ans,dragonlen);
for(int i=1;i<=dragonlen;i++)
{
cout<<dragon[i];
}
cout<<endl;
return;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str[i];
str[i+n]=str[i];
len[i]=str[i].length();
len[i+n]=len[i];
}
n*=2;
dragonlen=1;
cin>>dragon[1];
dfs();
cout<<ans<<endl;
return 0;
}
提交记录