eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Конкатенация

Конкатенация

Рассмотрим две строки \textbf{α} и \textbf{β}. Их конкатенацией называется строка, получающаяся в результате приписывания к строке \textbf{α} строки \textbf{β}. Эта строка обозначается \textbf{αβ}. Например, конкатенацией строк '\textbf{ab}' и '\textbf{ac}' будет строка '\textbf{abac}'. Очевидно, что это определение естественным образом распространяется на конкатенацию произвольного количества строк. Так, конкатенацией нуля строк будет пустая строка, а конкатенацией одной строки будет она сама. Рассмотрим некоторое множество \textbf{W}, состоящее из строк. Назовём его замыканием множество \textbf{W^\{*\}}, состоящее из тех и только тех строк, которые можно получить в результате конкатенации нуля и более строк из множества \textbf{W}. Таким образом, множество \textbf{W^\{*\}} содержит пустую строку, и если строка \textbf{α} принадлежит множеству \textbf{W^\{*\}}, а строка \textbf{β} принадлежит множеству \textbf{W}, то строка \textbf{αβ} принадлежит множеству \textbf{W^\{*\}}. Более того, все элементы множества \textbf{W^\{*\}} можно представить в таком виде, то есть \textbf{W^\{*\}} является пересечением всех множеств с указанными выше свойствами. Например, если \textbf{W=\{a,ab\}}, то \textbf{W^\{*\}} состоит из всех строк, в которых перед каждой буквой '\textbf{b}' идёт хотя бы одна буква '\textbf{a}'. Задано некоторое множество строк \textbf{W}. Требуется найти множество \textbf{X}, такое, что \textbf{W^\{*\}=X^\{*\}} и множество \textbf{X} имеет минимальное возможное число элементов. В случае, если таких множеств несколько, подходит любое из них. Например, если \textbf{W=\{a,aabb,ab,ac,b,bac\}}, то единственным множеством, удовлетворяющим условиям задачи будет множество \textbf{\{a,ac,b\}}. \InputFile Входной файл состоит из набора строк, каждая из которых является элементом множества \textbf{W}. Каждая строка из множества \textbf{W} встречается во входном файле хотя бы один раз. Суммарная длина всех строк во входном файле не превосходит \textbf{10^4}. Количество строк во входном файле не превосходит \textbf{10^4}. После каждой строки из множества \textbf{W} во входном файле идёт перевод строки (пара символов с ASCII кодами \textbf{13} и \textbf{10}). Строки состоят из символов с ASCII кодами от \textbf{33} до \textbf{126} включительно. \OutputFile Выведите в выходной файл элементы лексикографически минимального множества \textit{\textbf{X}}, удовлетворяющих условиям задачи. Каждая строка множества \textbf{X} должна быть выведена ровно один раз. Строки должны идти в лексикографическом порядке (лексикографический порядок используется в словарях, в этом порядке строка '\textbf{ab}\textit{'} меньше строки '\textbf{aba}\textit{'} и строка '\textbf{ab}\textit{'} меньше строки '\textbf{ac}\textit{'}).
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
a
aabb
ab
ac
b
bac
Выходные данные #1
a
ac
b