#P2046. Gap

Gap

描述

让我们来玩一个叫做“Gap”的纸牌游戏。

你有28张标有两位数字的纸牌。第一位数字(从1到4)代表纸牌的花色,第二位数字(从1到7)代表纸牌的数值。

首先,你将纸牌洗牌后正面朝上放在桌子上,排成四行七列,并在每一行的最左边留出一个空位。以下是初始布局的一个示例。

接下来,你移除所有数值为1的纸牌,并将它们放在各行最左边的空位上:“11”放在最上面一行,“21”放在下一行,依此类推。

现在你有28张纸牌和四个空位,这些空位被称为“Gap”,分布在四行八列中。你将从这个布局开始移动纸牌。

在每一步中,你选择四个空位中的一个,并用其左边邻居的后继纸牌来填充它。一张纸牌的后继纸牌是同一花色中的下一张纸牌,如果存在的话。例如,“42”的后继纸牌是“43”,而“27”没有后继纸牌。

在上述布局中,你可以将“43”移动到“42”右边的空位上,或者将“36”移动到“35”右边的空位上。如果你移动了“43”,一个新的空位将在“16”右边生成。你不能将任何纸牌移动到数值为7的纸牌右边,也不能移动到空位右边。

这个游戏的目标是,通过巧妙地选择移动步骤,形成四个同花色的递增序列,如下所示。

你的任务是找到达到目标布局所需的最少移动次数。

输入

输入以一个数字开始,表示接下来的初始布局数量。

每个布局由五行组成——一个空行和四行表示四行初始布局的行。每一行有七个两位数,分别对应纸牌。

输出

对于每个初始布局,输出一行,表示达到目标布局所需的最少移动次数。请注意,这个数字不应包括数值为1的纸牌的初始四次移动。如果从初始布局到目标布局没有移动序列,请输出“-1”。

输入数据 1

4

12 13 14 15 16 17 21
22 23 24 25 26 27 31
32 33 34 35 36 37 41
42 43 44 45 46 47 11

26 31 13 44 21 24 42
17 45 23 25 41 36 11
46 34 14 12 37 32 47
16 43 27 35 22 33 15

17 12 16 13 15 14 11
27 22 26 23 25 24 21
37 32 36 33 35 34 31
47 42 46 43 45 44 41

27 14 22 35 32 46 33
13 17 36 24 44 21 15
43 16 45 47 23 11 26
25 37 41 34 42 12 31

输出数据 1

0  
33  
60  
-1

来源

2003年日本,会津