2020级计算机专业《面向对象程序设计(C++)》

D. 字符组合

单点时限: 2.0 sec

内存限制: 256 MB

输入一个由字母组成的字符串 $S(1\le 长度\le 16)$,按字典序输出由 $S$ 中不同字符组成的所有字符组合(每个组合中的字符也按字典序排列)。

例如:cbaabc 中的不同字符是 abc 共 3 个,则 1 个字符组成的组合是 abc3 种,2 个字符组成的组合是 abbcac3 种,3 个字符组成的组合是 abc1 种。注意:abba 由相同字符组合而成,因此可认为是同一个组合。那么这个例子共有 7 种组合,按序分别为 aababcacbbcc

输入格式

第 $1$ 行:一个整数 $T$ ($1 \le T \le 10$) 为问题数。

接下来共 $T$ 行,每行输入一个长度不超过 $16$ 的字符串 $S$。

输出格式

对于每个问题,输出一行问题的编号($0$ 开始编号,格式:case #0: 等)。

然后对应每个问题按规定顺序在一行中输出每一个组合。

样例

Input
3
A
abccba
aA
Output
case #0:
A
case #1:
a
ab
abc
ac
b
bc
c
case #2:
A
Aa
a