Олимпиадный тренинг

Задача . Оптимальное подмножество строк - 2


Сегодня на уроке Петя узнал про бессуффиксные коды. Множество строк называется бессуффиксным кодом, если:

  • все строки в множестве различны;
  • не существует такой пары различных строк, что одна строка является суффиксом другой.

Строка s называется суффиксом строки t, если длина строки s не больше длины строки t, а также для любого i i-й символ строки s, считая с конца, совпадает с i-м символом строки t, считая с конца.

Например, ab является суффиксом строк ab и cab, но не является суффиксом строк a и ac.

Петя же решил придумать что-то новое и ввёл новое понятие — k-бессуффиксный код. Таким кодом он назвал множество строк, такое что:

  • все строки в множестве различны;
  • у любых двух различных строк наибольший общий суффикс имеет длину не больше k.

Наибольшим общим суффиксом двух строк s и t называется наибольшая по длине строка, являющаяся суффиксом обеих строк.

Теперь по данному набору строк s1, s2, ..., sn и числу k Петя хочет найти в этом наборе k-бессуффиксный код, состоящий из максимально возможного количества строк.

Помогите ему — найдите этот код.
 

Входные данные

В первой строке содержатся два числа n и k — количество строк в наборе и максимальная длина общего суффикса соответственно (1 ≤ n ≤ 105, 1 ≤ k ≤ 100). В i-й из следующих n строк содержится строка si — i-е слово из набора (1 ≤ |si| ≤ 100). Все строки состоят из строчных латинских букв. Гарантируется, что суммарная длина всех строк не превосходит 106.
 

Выходные данные

В первой строке выведите число m — максимально возможное количество строк в k-бессуффиксном коде. В следующих m строках выведите элементы этого кода. Элементы можно выводить в любом порядке. Если существует несколько ответов с максимальным m, разрешается вывести любой.


Примечание
В первом примере у строк 1 и 5, а также у строк 2 и 4 наибольший общий префикс больше k, поэтому максимальное количество строк, из которых может состоять k-беспрефиксный код - 3. Во втором примере у любой пары подстрок наибольший общий префикс не больше 2, однако, так как код не может содержать одинаковые строки, больше 3 строк в него не включить.
Примеры
№Входные данныеВыходные данные
1
5 2
cbaa
dbca
caa
abca
baa
3
baa
caa
abca
2
4 2
aa
cba
aa
bba
3
aa
bba
cba
Статистика успешных решений по компиляторам
 Кол-во
Python2
С++4
Комментарий учителя