Задача №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