[SCOI2005]骑士精神
在一个 的棋盘上,有 个白色骑士、 个黑色骑士和一个空位。每次可以选择一个骑士,按照骑士的走法移动到空位:移动前后两个格子的横坐标之差与纵坐标之差分别为 和 ,或分别为 和 。
给定一个初始棋盘,需要通过若干次移动,将其变为以下目标棋盘:
11111
01111
00*11
00001
00000
为了体现骑士精神,你需要使用最少的移动步数完成任务。
输入格式
第一行输入一个正整数 ,表示数据组数。
接下来输入 个 的字符矩阵。其中,字符 表示白色骑士,字符 表示黑色骑士,字符 表示空位。相邻两组数据之间没有空行。
输出格式
对于每组数据输出一行。
如果能在 步以内(包括 步)到达目标状态,则输出最少移动步数;否则输出 。
样例输入
2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
样例输出
7
-1
数据范围
- ;
- 每组数据均为一个 的棋盘。
来源与许可
本题为 SCOI 2005 试题「骑士精神」,题面与测试数据整理自 BZOJ。
样例 1
输入
2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100
输出
7
-1