#CF1303C. C. 完美键盘

C. 完美键盘

每个测试的时间限制:2 秒 内存限制:256 兆字节

题目描述

Polycarp 想要组装自己的键盘。多行的布局对他来说太复杂了——他的键盘将只有一行,其中所有 2626 个小写拉丁字母按某种顺序排列。

Polycarp 在他注册的所有网站上使用相同的密码 ss(这不好,但他不在乎)。他想组装一个键盘,使得输入这个密码非常容易。他不喜欢在输入密码时移动手指,因此对于 ss 中每一对相邻的字符,它们在键盘上也必须是相邻的。例如,如果密码是 abacaba,那么布局 cabdefghi... 就是完美的,因为字符 a 和 c 在键盘上相邻,且 a 和 b 在键盘上相邻。保证 ss 中没有两个相邻的相等字符,因此,例如,密码不能是 password(因为有两个相邻的 s)。

你能帮助 Polycarp 选择完美的键盘布局吗(如果可能的话)?

输入格式

第一行包含一个整数 TT1T10001 \le T \le 1000)——测试用例的数量。 接下来 TT 行,每行包含一个字符串 ss1s2001 \le |s| \le 200),代表一个测试用例。ss 仅由小写拉丁字母组成,且 ss 中没有两个相邻的相等字符。

输出格式

对于每个测试用例,执行以下操作:

如果不可能组装出完美的键盘,则输出 NO(大写,本题中大小写敏感);

否则,输出 YES(大写),然后输出一个由 2626 个小写拉丁字母组成的字符串——完美的布局。每个拉丁字母在字符串中恰好出现一次。如果有多个答案,输出任意一个。

5
ababa
codedoca
abcda
zxzytyz
abcdefghijklmnopqrstuvwxyza
YES
bacdefghijklmnopqrstuvwxyz
YES
edocabfghijklmnpqrstuvwxyz
NO
YES
xzytabcdefghijklmnopqrsuvw
NO

数据规模与约定

对于 100%100\% 的数据,0n1070 \le n \le 10^7