1678: 密室逃脱

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

小Y喜欢玩密室逃脱,每次游戏开始时,小Y会进入一个密室,她需要按照顺序解开各个隐藏线索才能成功逃脱密室。小Y非常聪明,解开线索对她来说并不难,但是她有一点懒,她希望在通关过程中移动次数最少。请你帮小Y计算她至少要移动多少次才能成功通关。
密室是m行n列的格子矩阵,小Y从左上角(1.1)进入密室,密室中有三种格子:
墙,以数字0标记
路,以数字1标记
隐藏线索处,以数字(>1)标记,代表该线索的难度
小Y需要按照难度递增的顺序解开各个线索,逃脱密室。

Input

第一行是一个整数T,表示输入包含T组数据,分别是不同的游戏中小Y所处的密室。对于每组数据,第一行包括两个整数:m(1<=m<=100)n(1<=n<=100)。接下来m行,每行有n个数宁,第i行的第j个数字表示密室中第1行第j列的格子的类型。题目保证进入密室处(1,1)不是墙壁,线索的难度都不相同。

Output

对于每组数据,你需要输出一个整数,表示小Y在这个密室中至少要移动多少次才能成功通关。如果小Y不可能解开所有线索,输出-1.

Sample Input Copy

2
3 3
1 3 2
1 0 4
10 6 5
3 3 
1 3 2
0 0 0
10 6 5

Sample Output Copy

8
-1

HINT

样例解释:由于需要按难度顺序解开线索,在第一组数据中,小Y第一次移动到3时不能解密,在完成2之后需要回到3.最后小Y解开10时,她成功通关。

Source/Category