Задача №1874. Странный язык

Есть известная игра со словами: из букв данного слова составить как можно больше слов. Если буква повторяется в слове несколько раз, разрешается использовать её в каждом новом слове не больше, чем столько же раз. Порядок букв в оригинальном слове не имеет значения. Например, из слова CONTEST можно составить слова NOTE, NET, ON, TEST, SET и так далее. Вам поручили составить словарь для игры. Ваша задача в том, чтобы добавить туда \(n\) новых слов. Вы заранее знаете \(m\) слов \(W_i\) (\(1 \le i \le m\)), из которых в игре предстоит составлять слова, и вам требуется выбрать \(n\) новых слов для добавления в словарь, чтобы максимизировать общее число слов, которые можно выписать из этих \(m\) слов. Более формально, найдите такое множество непустых слов \(S\), где \(|S| = n\), \(W_i \notin S\) для любого \(i\), и \(\sum_{1 \le i \le m} |S_i|\) максимальна, где \(S_i \subset S\) есть множество слов, которые можно выписать, используя буквы \(W_i\).

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

Первая строка ввода содержит два целых числа \(n\) (\(1 \le n \le 100\)) — количество новых слов, которые можно добавить в словарь, и \(m\) (\(1 \le m \le 1\,000\)) — количество слов, с которыми будет впоследствии проводиться игра. Следующие \(m\) строк содержат сами слова. Каждое слово содержит не более \(100\) заглавных букв от A до Z.

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

Выведите \(n\) искомых слов, по одному слову на строке.

Примеры
Входные данные
3 5
A
ACM
ICPC
CONTEST
NEERC
Выходные данные
C
CN
E
Сдать: для сдачи задач необходимо войти в систему