n = (int)(input())
word = []
for i in range(n):
bowl = input()
word.append(bowl)
idx = input()
def check(str1,str2):
lenk = min(len(str1),len(str2))
for i in range(1,lenk):
flag = 1
for j in range(1,i+1):
if(str1[len(str1) - 1 - i + j] != str2[j - 1]):
flag = 0
if(flag):
return i
return 0
isvis = [0 for i in range(n)]
ini = [x for x in word if x[0] == idx]
ans = 0
def dfs(str1,bowl):
flag = True
for i in range(n):
if(check(str1,word[i]) and isvis[i] < 2):
flag = False
bowl += len(word[i]) - check(str1,word[i])
isvis[i] += 1
dfs(word[i],bowl)
isvis[i] -= 1
bowl -= len(word[i]) - check(str1, word[i])
if(flag):
global ans
ans = max(ans,bowl)
for x in ini:
isvis[word.index(x)] = 1
dfs(x,len(x))
print(ans,end="\n")
几个数据
1
envelope
e
15
2
abababab
abababc
a
19
4
ABABABC
ABABABD
ABABABA
CDABABA
A
43