eolymp
bolt
Try our new interface for solving problems
Məsələlər

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

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

Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB

Рассмотрим множество из n символов {1, 2, ..., n}. Пусть каждому из этих символов соспоставлен некоторый вектор b_i из 0 и 1. Тогда каждая строка из исходных символов c = c_1c_2...c_k определяет вектор из 0 и 1, получаемый конкатенцией b_c1,b_c2,...,b_ck, обозначим его за B(c). Найдите самый короткий вектор X, состоящий из 0 и 1, такой, что X = B(c) и X = B(d) для двух различных упорядоченных наборов c и d. Если таких последовательностей несколько, то выведите наименьшую в лексикографическом порядке. Гарантируется, что хотя бы одна такая последовательность будет существовать.

Giriş verilənləri

Первая строка входного файла содержит число N (2N20). Следующие N строк содержат вектора b_i, длиной не более 20.

Çıxış verilənləri

В выходной файл выведите на первой строке длину найденной последовательности. На второй строке выведите саму последовательность.

Nümunə

Giriş verilənləri #1
5
0110
00
111
001100
110
Çıxış verilənləri #1
9
001100110