编程题
字母排列
## 来源
Southwestern European Regional Contest 1995 (ZOJ1256)
## 题目描述
给定几个英文字母,输出由这几个字母组成的所有可能的单词。比如,给定的字母是'a'、'b'和'c',程序要输出"abc"、"acb"、"bac"、"bca"、"cab"和"cba",这是由这3个字母组合的所有可能的单词。在给定的字母中,有的字母可能会重复出现,在这种情况下不同的排列可能得到相同的单词。本题需要按字母表的升序输出所有的单词,但相同的单词只需要输出一次。
## 输入描述
输入数据的第1行是一个表示测试数据数目的正整数n。后面有n行,每行包含若干个大小写英文字母,并且同一个字母的大小写在本题中认为是两个不同的字母。
## 输出描述
对每个测试数据,按字母表的升序输出所有可能的单词。注意,字母表中字母的大小顺序定义为:'A'<'a'<'B'<'b'<...<'Z'<'z'。
## 样例输入
```txt
1
aAb
```
## 样例输出
```txt
Aab
Aba
aAb
abA
bAa
baA
```