二阶魔方 Beta Round #14 (Cube杯水题赛)
描述
二阶魔方有6个面,分别为U(p),D(own),L(eft),R(ight),F(orward),B(ack)。即上,下,左,右,前,后面。例如,下面是一个已还原的二阶魔方的展开图(图1):
(图1) (图2) (图3) UU UU UF UU UU UF LLFFRRBB FFRRBBLL LLFDRRUB LLFFRRBB FFRRBBLL LLFDRRUB DD DD DB DD DD DB
注意,尽管(图2)也是一个六个面颜色相对正确的魔方,但是在本题中,还原的定义是所有色块都严格处于其应该在的地方;换言之,本题中我们认为的还原状态只有一种,即(图1)。
我们对于一次转动的定义是:将某个面顺时针旋转90°,或逆时针旋转90°,或旋转180°。这样,由于魔方共有6个面,我们就有18种合法的转动。例如,在(图1)的状态下,将R面顺时针旋转90°,便得到了(图3)的状态。
我们的问题是,给出一个魔方,求它至少转动多少步,才能到达还原状态,即图1所示的状态。特别地,如果这不是一个合法的魔方,请输出-1。
输入格式
输入是一个以展开图形式给出的二阶魔方,格式为:
XX XX XXXXXXXX XXXXXXXX XX XX
其中X为U,D,L,R,F,B六个字母之一;第1,2,5,6行的行首必定为2个空格。
输出格式
输出还原该魔方所需最小步数。如果无论如何都不能还原,输出-1。
样例
输入1:
UU UU UUUUUUUU UUUUUUUU UU UU
输出1:
-1
输入2:
UU UF LLFRURBB LLFFRRBB DD DD
输出2:
-1
输入3:
UF UF LLFDRRUB LLFDRRUB DB DB
输出3:
1
输入4:
UU UU FFRRBBLL FFRRBBLL DD DD
输出4:
2