Кубики с буквами
Эта задача основана на головоломке Рэндалла Л. Уипки.
В игре "Кубики с буквами" используется набор кубиков, на каждой грани которых нанесена буква алфавита, при этом ни одна буква не повторяется в пределах всего набора. Максимальное количество кубиков — 4, что позволяет использовать до 24 из 26 букв алфавита.
Слова формируются путем перестановки и поворота кубиков так, чтобы верхние буквы всех кубиков вместе составляли слово. Следующие 13 слов были составлены с использованием определенного набора кубиков:
CLIP
CLOG
CONE
DISH
FAZE
FURL
MARE
MOCK
QUIP
STEW
TONY
VICE
WARD
В этих словах использованы только 23 различные буквы, поэтому мы сообщаем вам дополнительную информацию: буква B присутствует на одном из кубиков. Можете ли вы теперь определить буквы на каждом кубике? Для данного набора слов существует уникальный набор кубиков. Мы укажем это решение в канонической форме как:
ABCHTU DEKLQY FGIMNW OPRSVZ
Обратите внимание, что буквы на каждом отдельном кубике указаны в виде строки символов в алфавитном порядке, и четыре строки из 6 букв, представляющие четыре кубика, также перечислены в алфавитном порядке.
Более простой пример основывается на двух кубиках, образующих следующие 11 строк из двух символов (хотя головоломки интереснее, когда строки являются настоящими словами, это не обязательно):
PI
MU
HO
WE
WO
BE
MA
HI
RE
AB
PY
Единственное решение для двух кубиков, образующих эти строки, это:
AEIOUY BHMPRW
Те же два кубика можно было бы определить без последней пары PY, если бы вам сказали, что на одном кубике есть буква Y. Ваша задача — сделать аналогичные выводы.
Входные данные
Входные данные будут содержать от 1 до 20 наборов данных. Первая строка каждого набора данных будет включать положительное целое число n (6 ≤ n ≤ 30) и символ c, описанный ниже. Следующие n строк будут содержать строку из заглавных букв. Каждая строка будет одинаковой длины, назовем ее k, с 2 ≤ k ≤ 4. После последнего набора данных следует строка, содержащая только 0.
Возвращаясь к вопросу о специальном символе c в первой строке ввода для каждого набора данных, необходимо рассмотреть два случая. Напомним, что неявный набор из k кубиков должен использовать 6*k различных букв на своих гранях. Если все 6*k этих букв появляются в наборе строк, то символ c в первой строке ввода — это дефис, '-'. В противном случае строки выбраны так, что только одна буква на кубиках не появляется. В этом случае символ c в первой строке ввода будет этой не отображаемой буквой. (Например, буква B в нашей начальной головоломке.)
Выходные данные
Для каждого набора данных выводится одна строка, содержащая строку из 6 букв для каждого кубика, показывающую буквы на гранях этого кубика. Каждая из этих строк должна иметь свои буквы в алфавитном порядке, и набор строк должен быть представлен в алфавитном порядке относительно друг друга, с одним пробелом между каждой парой. Мы выбрали наборы данных так, чтобы у каждого было уникальное решение.