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

Непрефіксні коди

Непрефіксні коди

Разглянемо множину з \textbf{n} символів \{\textbf{1}, \textbf{2}, ..., \textbf{n}\}. Нехай кожному з цих символів співставлено деякий вектор \textbf{b_i} з \textbf{0} та \textbf{1}. Тоді кожен рядок із заданих символів \textbf{c = c_1c_2...c_k} визначає вектор з \textbf{0} та \textbf{1}, який отримується конкатенцією \textbf{b_c1},\textbf{b_c2},...,\textbf{b_ck}, позначимо його як \textbf{B(c)}. Знайдіть самий короткий вектор \textbf{X}, який складається з \textbf{0} та \textbf{1}, такий, що \textbf{X = B(c)} і \textbf{X = B(d)} для двуо різних упорядкованих наборів \textbf{c} та \textbf{d}. Якщо таких послідовностей декілька, то виведіть найменшу у лексикографічному порядку. Гарантується, що хоча б одна така послідовність буде існувати. \InputFile Перший рядок вхідного файлу містить число \textbf{N} (\textbf{2} ≤ \textbf{N} ≤ \textbf{20}). Наступні \textbf{N} рядків містять вектори \textbf{b_i}, довжиною не більше \textbf{20}. \OutputFile У вихідний файл виведіть у першому рядку довжину знайденої послідовності. У другому рядку виведіть саму послідовність.
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
5
0110
00
111
001100
110
Вихідні дані #1
9
001100110