eolymp
bolt
Try our new interface for solving problems
Problems

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

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

Рассмотрим множество из \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 В выходной файл выведите на первой строке длину найденной последовательности. На второй строке выведите саму последовательность.
Time limit 2 seconds
Memory limit 256 MiB
Input example #1
5
0110
00
111
001100
110
Output example #1
9
001100110