#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;
}