#include<bits/stdc++.h>
using namespace std;
int n;
string arr[21];
int vis[21];
int maxn;
void dfs(string a,int x) {
maxn=max(maxn,x);//取最大值
for(int i=1; i<=n; i++) {
int p=1;
int la=a.length();
int lb=arr[i].length();
while(p<min(la,lb)) {
if(a.substr(la-p)==arr[i].substr(0,p)&&vis[i]<2) {
vis[i]++;//记录
dfs(arr[i],x+lb-p);
vis[i]--;//回溯
break;
}
p++;//单词长度用来寻找前后相同的词
}
}
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>arr[i];
}
char t;
cin>>t;
for(int i=1; i<=n; i++) {
if(arr[i][0]==t) {//寻找与字符匹配的
vis[i]++;
dfs(arr[i],arr[i].length());
vis[i]--;
}
}
cout<<maxn;
return 0;
}
substr(int x);一个参数为截取此位置到末尾的
substr(int x1,int x2);x1为位置,x2为截取的长度
思路为dfs然后一块为找首字符相同的,一块为找字符相同的;