#include<cstring>
#include<iostream>
using namespace std;
const int N=7;
char s[N][N];
int g[N][N];
int n;
int idx[5]={0,0,0,1,-1},idy[5]={0,1,-1,0,0};
void turn(int x,int y){
for(int i=0;i<5;i++){
int a=x+idx[i],b=y+idy[i];
if(a>=0&&a<5&&b>=0&&b<5){
g[a][b]^=1;
}
}
}
int dfs(){
int ans=0x3f3f3f3f;
for(int k=0;k<1<<5;k++){
int res=0;
int backup[N][N];
memcpy(backup,g,sizeof g);
for(int i=0;i<5;i++){
if((k>>i)&1){
res++;
turn(0,i);
}
}
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
if(g[i][j]==0){
turn(i+1,j);
res++;
}
}
}
bool flag=true;
for(int j=0;j<5;j++){
if(g[4][j]==0) {
flag=false;
break;
}
}
if(flag){
ans=min(ans,res);
}
memcpy(g,backup,sizeof g);
}
if(ans>6)
ans=-1;
return ans;
}
int main(){
cin>>n;
while(n--){
for(int i=0;i<5;i++){
scanf("%s",s[i]);
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
g[i][j]=s[i][j]-'0';
}
}
cout<<dfs()<<endl;
}
}