using System;
using System.Collections.Generic;
class Program{
public static void Main() {
var tokens = Console.ReadLine().Split(' ');
var n = int.Parse(tokens[0]);
var x = tokens[1+n];
var k = int.Parse(tokens[2+n]);
// 1 Find siblings.
var proto = new Dictionary<char, int>();
foreach(var c in x) {
if (proto.TryGetValue(c, out int value)) {
proto[c] = value + 1;
} else {
proto[c] = 1;
}
}
var sibs = new List<string>();
for (var i=1; i<=n; ++i) {
var s = tokens[i];
if (s.Length != x.Length) continue;
var sd = new Dictionary<char, int>(proto);
var nClear = 0;
int u = 0;
for(var j=0; j<s.Length; ++j) {
var c = s[j];
if (u!=-1 && c==x[u]) ++u; else u=-1;
if (sd.TryGetValue(c, out int value)) {
value -= 1;
if (value == 0) nClear += 1;
else if (value == -1) {
nClear = -1;
break;
}
sd[c] = value;
} else {
nClear = -1;
break;
}
}
if (nClear == proto.Count && u != x.Length) {
sibs.Add(s);
}
}
// 2 Output and Find kth sibling.
Console.WriteLine(sibs.Count);
k -= 1;
if (sibs.Count > k) {
sibs.Sort();
Console.WriteLine(sibs[k]);
}
}
}