#include<bits/stdc++.h>
using namespace std;
int t,x,y;
int dx[8]={-2,-2,-1,1,-1,1,2,2};
int dy[8]={-1,1,2, 2,-2,-2,-1,1};
string ditu={"111110111100*110000100000"};
char mp[15][15];
void zh1(string ss){
for(int i=0;i<ss.size();i++){
mp[i/5][i%5]=ss[i];
if(ss[i]=='*'){
x=i/5;
y=i%5;
}
}
}
string zh2(){
string s3;
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
s3=s3+mp[i][j];
}
}
return s3;
}
int main(){
scanf("%d",&t);
for(int l=1;l<=t;l++){
string s,s1;
int ans=2147483647;
map<string,int> m;
map<string,int> n;
for(int i=1;i<=5;i++){
cin>>s1;
s=s+s1;
}
if(s==ditu){
printf("0\n");
continue;
}
queue<string> q;
queue<string> p;
q.push(s);
p.push(ditu);
m[s]=1;
n[s]=1;
while(!q.empty()){
string s4=q.front();
q.pop();
if(m[s4]>=8){
break;
}
if(s4==ditu){
break;
}
zh1(s4);
for(int i=0;i<8;i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||xx>4||yy<0||yy>4)continue;
swap(mp[xx][yy],mp[x][y]);
string s2=zh2();
swap(mp[xx][yy],mp[x][y]);
if(m[s2]!=0)continue;
m[s2]=m[s4]+1;
q.push(s2);
}
}
while(!p.empty()){
string s5=p.front();
p.pop();
if(n[s5]>=9){
break;
}
if(s5==s){
break;
}
if(m[s5]!=0&&n[s5]!=0){
ans=min(ans,m[s5]+n[s5]);
}
zh1(s5);
for(int i=0;i<8;i++){
int xxx=x+dx[i];
int yyy=y+dy[i];
if(xxx<0||xxx>4||yyy<0||yyy>4)continue;
swap(mp[xxx][yyy],mp[x][y]);
string s6=zh2();
swap(mp[xxx][yyy],mp[x][y]);
if(n[s6]!=0)continue;
n[s6]=n[s5]+1;
p.push(s6);
}
}
if(ans>=17){
printf("-1\n");
}
else{
printf("%d\n",ans-1);
}
}
return 0;
}