Sean 是中国最优秀的魔方选手之一。今天,他正在参加中国口袋魔方大赛(CCPC)的“最少步数还原”项目。
口袋魔方是 $2 \times 2 \times 2$ 的魔方。魔方的每个面都可以顺时针或逆时针旋转。一个标准还原状态的口袋魔方配色方案如下(如图 1 所示):顶面为黄色,底面为白色,左面为橙色,右面为红色,前面为蓝色,后面为绿色。
图 1:标准口袋魔方的还原状态
“最少步数还原”项目要求选手找到一个操作序列,将口袋魔方的一种状态变换为另一种状态,在所有参赛者中找到最短序列的选手获胜。在该项目中,选手可以旋转六个面中的任意一个,也可以旋转整个口袋魔方。注意,旋转 90 度计为 1 步,旋转 180 度计为 2 步;然而,旋转整个魔方不计入总步数。
由于存在数百万种本质不同的状态,这对 Sean 来说太难了,他无法独立解决。他希望你编写一个程序,在给定初始状态和目标状态的情况下,求出最少需要的步数。你能帮帮他吗?
输入格式
输入的第一行包含一个整数 $T$ ($1 \le T \le 250\,000$),表示测试用例的数量。
每个测试用例以一个空行开始,随后是六行,表示初始状态和目标状态。状态由口袋魔方的展开图表示,格式如下:
XX XX XXXXXXXX XXXXXXXX XX XX
其中 X 是 $\{G, O, Y, R, W, B\}$ 中的一个大写字母,分别代表绿色、橙色、黄色、红色、白色和蓝色,其他字符为空格。初始状态和目标状态水平并排,每行由竖线 | 分隔。换句话说,第 1 到第 8 列表示初始状态,第 9 列为竖线,第 10 到第 17 列表示目标状态。保证两种状态都是合法的,即它们都可以通过有限步操作还原到标准状态。
输出格式
对于每个测试用例,输出一行,包含一个整数,表示将初始状态变换为目标状态所需的最少步数。
样例
样例输入 1
2 GO | WG GO | WY OOYBYWBW|ROGBRYRG RRYRBWRB|BOGBWYBW GY | YO WG | RO WR | YR OR | OW OYGBWGYB|OWBRBYBG BWGWRBYY|YOWRYGWO OG | GG OR | BR
样例输出 1
2 11
说明
在样例数据的第一个测试用例中,最优操作序列如图 2 所示。总步数为 2(注意第一步不计入步数),且可以证明无法用少于 2 步完成。
图 2:第一个测试用例的最优操作序列