RT,help me!!!!!!
#include<bits/stdc++.h>
using namespace std;
bool mp[7][7],use[5][5];
int ans=6,t;
void dfs(int now,int x,int y){
bool f=1;
mp[x][y]=!mp[x][y];
mp[x+1][y]=!mp[x+1][y];
mp[x-1][y]=!mp[x-1][y];
mp[x][y+1]=!mp[x][y+1];
mp[x][y-1]=!mp[x][y-1];
use[x][y]=1;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
if(!mp[i][j]){
f=0;
if(now==6){
use[x][y]=0;
mp[x][y]=!mp[x][y];
mp[x+1][y]=!mp[x+1][y];
mp[x-1][y]=!mp[x-1][y];
mp[x][y+1]=!mp[x][y+1];
mp[x][y-1]=!mp[x][y-1];
return;
}
break;
}
}
}
if(f){
ans=min(ans,now);
use[x][y]=0;
mp[x][y]=!mp[x][y];
mp[x+1][y]=!mp[x+1][y];
mp[x-1][y]=!mp[x-1][y];
mp[x][y+1]=!mp[x][y+1];
mp[x][y-1]=!mp[x][y-1];
return;
}
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
if(!use[i][j]){
dfs(now+1,i,j);
}
}
}
use[x][y]=0;
mp[x][y]=!mp[x][y];
mp[x+1][y]=!mp[x+1][y];
mp[x-1][y]=!mp[x-1][y];
mp[x][y+1]=!mp[x][y+1];
mp[x][y-1]=!mp[x][y-1];
return;
}
void start_dfs(){
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
dfs(0,i,j);
}
}
if(ans==6) cout<<-1<<'\n';
else cout<<ans<<'\n';
}
int main(){
cin>>t;
while(t--){
for(int i=1;i<=5;i++){
int x;
cin>>x;
mp[i][1]=x/10000;
mp[i][2]=x/1000%10;
mp[i][3]=x/100%10;
mp[i][4]=x/10%10;
mp[i][5]=x%10;
}
start_dfs();
}
}