Олимпиадный тренинг

Задача . F. Странная НОП


Вам даны \(n\) строк \(s_1, s_2, \ldots, s_n\), состоящих из строчных и заглавных латинских букв. Более того, каждый символ в каждой строке встречается не более двух раз. Найдите самую длинную общую подпоследовательность этих строк.

Строка \(t\) является подпоследовательностью строки \(s\), если \(t\) может быть получена из \(s\) удалением нескольких (возможно, ни одного или всех) символов.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится единственное целое число \(t\) (\(1 \leq t \leq 5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка описания каждого набора входных данных содержит единственное целое число \(n\) (\(2 \leq n \leq 10\)) — количество строк.

В следующих \(n\) строках содержатся строки \(s_i\). Все \(s_i\) непустые, состоят из строчных и заглавных латинских букв, и никакой символ не встречается ни в одной строке более чем два раза.

Выходные данные

Для каждого набора входных данных выведите ответ в двух строках.

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

Во второй — саму подпоследовательность. Если существует несколько самых длинных общих подпоследовательностей, выведите любую из них.

Примечание

В первом наборе входных данных одна из самых длинных общих подпоследовательностей это «A». Нет ни одной общей подпоследовательности длины \(2\).

Во втором наборе входных данных множества символов строк не пересекаются, поэтому никакая непустая строка не может быть общей подпоследовательностью.


Примеры
Входные данныеВыходные данные
1 4
2
ABC
CBA
2
bacab
defed
3
abcde
aBcDe
ace
2
codeforces
technocup
1
A
0

3
ace
3
coc

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя