#include<bits/stdc++.h>
using namespace std;
int mp[6][6],want[6][6]={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[8]={-2,-1,1,2,2,1,-1,-2},dy[8]={-1,-2,-2,-1,1,2,2,1},d=0;
int h()
{
int cnt=0;
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)cnt+=mp[i][j]!=want[i][j];
}
return cnt;
}
void dfs(int up,int now,int px,int py,int kx,int ky)
{
if(now==up)
{
if(h()==0){cout<<up<<'\n';d=1;}
return;
}
if(now+h()>up)return;
for(int i=0;i<8;i++)
{
int xx=kx+dx[i],yy=ky+dy[i];
if(xx<1||xx>5||yy<1||yy>5)continue;
swap(mp[kx][ky],mp[xx][yy]);
dfs(up,now+1,kx,ky,xx,yy);
if(d)return;
swap(mp[kx][ky],mp[xx][yy]);
}
}
void sol()
{
char c;int ki,kj;
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
cin>>c;
mp[i][j]=(c=='*'?2:c-48);
if(c=='*'){ki=i;kj=j;}
}
}
for(int i=0;i<=15&&!d;i++)dfs(i,0,0,0,ki,kj);
if(d==0)cout<<-1<<'\n';
d=0;
}
int main()
{
int t;cin>>t;
while(t--)sol();
return 0;
}