#include<bits/stdc++.h>
#define ll long long
#define debug
using namespace std;
int st[6][6]={{0,0,0,0,0,0},{0,1,1,1,1,1},{0,0,1,1,1,1},{0,0,0,2,1,1},{0,0,0,0,0,1},{0,0,0,0,0,0}};
int dx[]={0,1,1,-1,-1,2,2,-2,-2};
int dy[]={0,2,-2,2,-2,1,-1,1,-1};
int a[6][6];
bool found;
int h(){
int cnt=0;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
if(a[i][j]!=st[i][j]&&a[i][j]!=2){
cnt++;
}
}
}
return cnt;
}
pair<int,int> find(){
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
if(a[i][j]==2){
return make_pair(i,j);
}
}
}
}
void ids(int dep,int nowdep){
if(nowdep>dep) return ;
if(h()==0&&dep==nowdep){
found=1;
return ;
}
int x=find().first,y=find().second;
for(int i=1;i<=8;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=5&&ny<=5){
swap(a[x][y],a[nx][ny]);
if(h()+nowdep<=dep){
ids(dep,nowdep+1);
}
swap(a[x][y],a[nx][ny]);
}
}
}
int t;
int main(){
cin>>t;
getchar();
while(t--){
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
char c=getchar();
if(c=='*'){
a[i][j]=2;
}
else{
a[i][j]=(int)(c-'0');
}
}
getchar();
}
if(h()==0){
puts("0");
goto luqyou;
}
for(int i=1;i<=15;i++){
ids(i,0);
if(found){
cout<<i<<endl;
goto luqyou;
}
}
puts("-1");
luqyou:;
found=0;
}
return 0;
}