#include<stdio.h>
#include<string.h>
int char_count(char *ptr1, char ch)
{
int len = strlen(ptr1);
int count = 0;
for(int i=0; i<len; i++)
{
if(ch == ptr1[i])
count++;
}
return count;
}
int judge(char *ptr1, char *ptr2)
{
int len = strlen(ptr1);
for(int i=0; i<len; i++)
{
if(char_count(ptr1, ptr1[i]) != char_count(ptr2, ptr1[i]))
return 0;
}
return 1;
}
int main()
{
int n, k;
int cnt=0;
scanf("%d ", &n);
char str[1000][10];
char bor[1000][10];
char arr[10];
for(int i=0; i<n; i++)
{
scanf("%s", str[i]);
}
scanf("%s", arr);
scanf("%d", &k);
int len = strlen(arr);
for(int i=0; i<n; i++)
{
if(strlen(str[i]) != len)
continue;
if(strcmp(str[i], arr) == 0)
continue;
if(judge(arr, str[i]))
{
for(int j=0; j<len+1; j++)
bor[cnt][j] = str[i][j];
cnt++;
}
}
char tmp[1][10];
for(int i=0; i<cnt-1; i++)
{
for(int j=i+1; j<cnt; j++)
{
if(strcmp(bor[i],bor[j]) > 0)
{
for(int k=0; k<cnt; k++)
{
tmp[0][k] = bor[i][k];
bor[i][k] = bor[j][k];
bor[j][k] = tmp[0][k];
}
}
}
}
printf("%d\n", cnt);
if (k < cnt)
printf("%s\n", bor[k-1]);
return 0;
}