一台机器有 $M$ 个槽位,从 $1$ 到 $M$ 编号,每个槽位可以放置写有字母的卡片。每个槽位 $i$ 只能使用该槽位专属的一组可用卡片来填充。当所有 $M$ 个槽位都被填满时,卡片上的字母从左到右拼接在一起,形成一个单词。
每张卡片在创建单词时只能使用一次。
一个单词被认为是美丽的,当且仅当它的所有字符都互不相同。例如,单词 abchd、a 和 ab 是美丽的,而单词 abdsa 和 aa 则不是。
任务是确定使用每个槽位的可用卡片可以创建的互不相同的漂亮单词的最大数量。
图 1. 样例中的第一个测试用例。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10^3$),表示测试用例的数量。接下来对于每个测试用例:
- 第一行包含一个整数 $M$ ($1 \le M \le 26$)。
- 接下来 $M$ 行,每行包含一个字符串 $S_i$,表示可用于槽位 $i$ 的卡片集合。保证对于每个 $c \in S_i$,都有 $c \in \{\text{a}, \text{b}, \dots, \text{z}\}$。
所有测试用例中 $|S_i|$ 的总和不超过 $10^6$。
输出格式
对于每个测试用例:
- 首先,输出一行,包含一个整数 $C$,表示你可以创建的最大单词数量。
- 接下来输出 $C$ 行,每行包含一个字符串 $W_i$,表示你创建的单词。
样例
输入 1
2 4 aaab abcd ccd ade 3 aaabc abbbc abccc
输出 1
3 bcda adce abcd 5 abc abc abc cab bca