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]);
        }
    }
}