#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#define MAX(a,b) ((a)>(b)?(a):(b))
char str[20][20],ch;
int n,vis[20], max_len, max;
bool Check(const char s1[],const char s2[],int* i)
{
int len1 = strlen(s1), len2 = strlen(s2),k = 1;
while (k < len1 && k < len2 ) {
if (s1[len1 - k] != s2[0]) {
k++;
continue;
}
else {
if (strncmp(s1 + len1 - k, s2, k) == 0) {
max_len += len2 - k;
*i = k;
return true;
}
else return false;
}
}
return false;
}
void dfs(char const *s1)
{
for (int i = 0; i < n; i++)
{
int k = 0;
if (vis[i] != 2 && Check(s1, str[i],&k)) {
vis[i]++;
dfs(str[i]);
max = MAX(max, max_len);
max_len -= (strlen(str[i]) - k);
vis[i]--;
}
}
}
int main()
{
scanf("%d", &n);
getchar();
getchar();
for (int i = 0; i < n; i++)
{
scanf("%s", str[i]);
getchar();
getchar();
}
scanf("%c", &ch);
for (int i = 0; i < n; i++)
{
if (ch == str[i][0]) {
max_len = strlen(str[i]);
vis[i]++;
dfs(str[i]);
vis[i]--;
}
}
printf("%d", max);
return 0;
}