CF1303C Perfect Keyboard

题目描述

Polycarp 想要组装他自己的键盘。对于他来说,多行布局太复杂了——他的键盘只会有一行,所有 $26$ 个小写拉丁字母将以某种顺序排列。 Polycarp 在所有注册的网站上都使用相同的密码 $s$(虽然这样不好,但他并不在意)。他希望组装一个可以让他非常轻松输入这个密码的键盘。他不喜欢在输入密码时移动手指,因此,对于 $s$ 中每一对相邻字符,它们在键盘上也必须是相邻的。例如,如果密码是 abacaba,那么布局 cabdefghi... 就是完美的,因为 a 和 c 在键盘上相邻,a 和 b 也在键盘上相邻。保证 $s$ 中没有两个相邻的相同字符,因此,例如,密码不能是 password(因为有两个相邻的 s)。 如果可能的话,你能帮 Polycarp 选择一个完美的键盘布局吗?

输入格式

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

输出格式

对于每个测试用例,执行以下操作: - 如果不可能组装出完美的键盘,输出 NO(必须大写,本题区分大小写); - 否则,输出 YES(大写),然后输出一个由 $26$ 个小写拉丁字母组成的字符串——即完美的布局。每个拉丁字母在该字符串中恰好出现一次。如果有多种答案,输出任意一种即可。

说明/提示

由 ChatGPT 4.1 翻译