今天是 2025 年 2 月 25 日。你和朋友们又度过了一个愉快的 Boggle 拼字游戏之夜。在大家都离开后,你彻底打扫了公寓。现在只剩下把 Boggle 托盘整理好。你开始思考:是否有可能在不交换任何骰子的情况下,仅通过旋转骰子,使 Boggle 托盘中的骰子按字母顺序排列?
Boggle 托盘由 16 个六面骰子组成。每个骰子的每个面上都标有一个英文字母。其中有一个骰子的一个面上标有 “Qu”。同一个骰子上任何字母出现的次数都不超过 3 次(即没有字母在同一个骰子上出现 4 次或更多次)。通过将骰子旋转一次,你可以将任何一个侧面的字母转到朝上的面。旋转两次可以将朝下的字母转到朝上的面。
图 B.1:第一个样例输入的直观表示。16 个 Boggle 骰子按阅读顺序显示。对于每个骰子,十字中心的字母(第一个骰子中的 “I”)是朝上的面,最右侧的字母(第一个骰子中的 “Y”)是朝下的面。阴影部分的骰子面描述了需要 15 次旋转的最优解。
按照标准的阅读顺序(从左到右,从上到下),使用尽可能少的旋转次数,使托盘中的骰子按字母非递减顺序排列。字母大小写不敏感,且两个字母的面被视为 “Q” 后面紧跟 “U”,因此 “QuU” 是已排序的,而 “QuT” 则不是。
输入格式
输入包含:
- 一行,包含 16 个字母,描述每个骰子当前朝上的面。
- 四行,每行包含 16 个字母,描述每个骰子当前侧面的四个面。
- 一行,包含 16 个字母,描述每个骰子当前朝下的面。
在每一行中,第 $i$ 个字母描述第 $i$ 个骰子($1 \le i \le 16$)。
所有字母均为英文大写字母(A-Z)。
字母 “Q” 代表标有 “Qu” 的双字母面,且在输入中恰好出现一次。
同一个骰子上任何字母出现的次数都不超过 3 次。
输出格式
如果可以将骰子朝上的面整理成字母顺序,输出所需的最少旋转次数。否则,输出 “impossible”。
样例
输入样例 1
IAZEEOXSPACKYIGF APDSSAOHEQAOGGLY LCERNRFILJINEEWE BDVLOMRESBATLTRI TEAAWSINUOOUKVIH YMNCDHBPTMTDUNUE
输出样例 1
15
输入样例 2
EXFETDMNMGDBRSRM TIEGINOVRETACNUA PRYKASAEATNTSHID SOHUOEJDHVKYLPLC UFIYAWBZONUIEIWE LBELCOQASIOLAEGP
输出样例 2
impossible