P3881 [JLOI2008] CODES

题目描述

给定 $n$ 个 $\texttt{01}$ 编码串 $S_1,S_2,\dots,S_n$,你的任务是寻找一个编码串 $T$,使得它至少可以被分解为两种不同的 $S_i$ 的排列。 例如: 给定 $5$ 个 $\texttt{01}$ 编码串:$S_1=\texttt{0110},S_2=\texttt{00},S_3=\texttt{111},S_4=\texttt{001100},S_5=\texttt{110}$。那么一个符合要求的编码串 $T$ 是:$\texttt{001100110}$,它有以下两种分解方法: $\texttt{00}+\texttt{110}+\texttt{0110} (S_2+S_5+S_1)$ 或 $\texttt{001100}+\texttt{110} (S_4+S_5)$ 而 $0110110$ 就不符合要求,它只有一种分解方法 $\texttt{0110}+\texttt{110} (S_1+S_5)$。 你要寻找长度最短的符合要求的编码串 $T$。若有多个符合要求的最短编码串 $T$,则输出字典顺序最小的。

输入格式

输入文件第一行包含一个整数 $n$,表示 $\texttt{01}$ 编码串总数。接下来的 $n$ 行每行给出一个长度不超过 $20$ 的 $\texttt{01}$ 编码串。

输出格式

输出文件共有两行,第一行为要求的编码串 $T$ 的长度,第二行输出编码串 $T$。对所有的测试数据,问题总有解。

说明/提示

- $n\le 20$