#include <bits/stdc++.h>
using namespace std;
const int N=10;
int T,h[N][N],b[N][N],k,n=5;
bool judge=0;
int a[N][N]={
{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 d[8][2]={{1,2},{1,-2},{2,1},{2,-1},{-2,1},{-2,-1},{-1,2},{-1,-2}};
void init()
{
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)h[i][j]=b[i][j];
}
int test(int s)
{
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]!=h[i][j])
if((++sum+s)>k)
return 0;
}
}
return 1;
}
void A(int s,int x,int y)
{
if(s==k)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]!=h[i][j])return;
}
}
judge=1;
return;
}
if(judge==1)return;
for(int i=0;i<=7;i++)
{
int tx=x+d[i][0],ty=y+d[i][1];
if(tx<1||ty<1||tx>n||ty>n)continue;
if(test(s)&&judge==0)
{
swap(h[x][y],h[tx][ty]);
A(s+1,tx,ty);
swap(h[x][y],h[tx][ty]);
}
}
return;
}
inline void solve()
{
int flag=0,xx=0,yy=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
char c;
cin>>c;
if(c=='*')h[i][j]=2,xx=i,yy=j;
else h[i][j]=c-'0';
b[i][j]=h[i][j];
}
}
judge=0;
for(k=0;k<=15;k++)
{
init();
A(0,xx,yy);
if(judge)
{
cout<<k<<'\n';
return;
}
}
cout<<-1<<'\n';
return;
}
int main()
{
scanf("%d",&T);
while(T--)solve();
return 0;
}