P0816

[SCOI2005]骑士精神

[SCOI2005]骑士精神

在一个 5×55\times 5 的棋盘上,有 1212 个白色骑士、1212 个黑色骑士和一个空位。每次可以选择一个骑士,按照骑士的走法移动到空位:移动前后两个格子的横坐标之差与纵坐标之差分别为 11 和 22,或分别为 22 和 11。

给定一个初始棋盘,需要通过若干次移动,将其变为以下目标棋盘:

11111
01111
00*11
00001
00000

为了体现骑士精神,你需要使用最少的移动步数完成任务。

输入格式

第一行输入一个正整数 TT,表示数据组数。

接下来输入 TT 个 5×55\times 5 的字符矩阵。其中,字符 00 表示白色骑士,字符 11 表示黑色骑士,字符 ∗\ast 表示空位。相邻两组数据之间没有空行。

输出格式

对于每组数据输出一行。

如果能在 1515 步以内(包括 1515 步)到达目标状态,则输出最少移动步数;否则输出 −1-1。

样例输入

2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100

样例输出

7
-1

数据范围

  • 1≤T≤101\le T\le 10;
  • 每组数据均为一个 5×55\times 5 的棋盘。

来源与许可

本题为 SCOI 2005 试题「骑士精神」,题面与测试数据整理自 BZOJ。

样例 1

输入

2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100

输出

7
-1