#include<bits/stdc++.h>
using namespace std;
int flag;
int a[10][10];
int dx[8]={1,1,-1,-1,2,2,-2,-2};
int dy[8]={2,-2,2,-2,1,-1,1,-1};
int ed[10][10];
int check(){
int cnt=0;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
if(a[i][j]!=ed[i][j])cnt++;
}
}
return cnt;
}
void dfs(int now,int x,int y,int dep){
if(now==dep){
if(!check())flag=1;return ;
}
if(flag)return ;
for(int i=0;i<8;i++){
int xx=x+dx[i],yy=x+dy[i];
if(xx<1||xx>5||yy<1||yy>5)continue;
swap(a[x][y],a[xx][yy]);
if(now+check()<=dep)dfs(now+1,xx,yy,dep);
swap(a[x][y],a[xx][yy]);
}
}
signed main(){
for(int i=1;i<=5;i++)ed[1][i]=1;
for(int i=2;i<=5;i++)ed[2][i]=1;
ed[3][3]=2;
for(int i=4;i<=5;i++)ed[3][i]=1;
ed[4][5]=1;
// for(int i=1;i<=5;i++){
// for(int j=1;j<=5;j++){
// cout<<ed[i][j];
// }
// cout<<endl;
// }
int t;cin>>t;
while(t--){
flag=0;
int k1,k2;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
char ch;cin>>ch;
if(ch=='0')a[i][j]=0;
if(ch=='1')a[i][j]=1;
if(ch=='*')a[i][j]=2,k1=i,k2=j;
}
}
for(int dep=0;dep<=15;dep++){
dfs(0,k1,k2,dep);
if(flag){
cout<<dep<<"\n";break;
}
}
if(!flag)cout<<"-1\n";
}
}
样例全输出-1,心态已炸,求调