wrong answer 373rd numbers differ - expected: '8', found: '-1'
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e3,INF=1e18;
bool s[N+1][N+1];
ll f[N+1][N+1];
int main(){
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++){
for(ll j=1;j<=m;j++){
scanf("%d",&s[j][i]);
}
}
for(ll i=0;i<=m;i++){
for(ll j=1;j<=n;j++){
f[i][j]=INF;//初始化
}
}
f[1][1]=0;
for(ll i=1;i<=m;i++){
if(!s[i][1]&&!s[i-1][n]){
f[i][1]=min(f[i][1],f[i-1][n]+1);
}
for(ll j=2;j<=n;j++) if(!s[i][j]){
f[i][j]=min(f[i][j],f[i-1][j-1]+1);
}
if(!s[i][1]&&!s[i][n]&&!s[i][n-1]){
f[i][1]=min(f[i][1],f[i][n-1]+1);
}
if(!s[i][2]&&!s[i][1]&&!s[i][n]){
f[i][2]=min(f[i][2],f[i][n]+1);
}
for(ll j=3;j<=n;j++) if(!s[i][j]&&!s[i][j-1]&&!s[i][j-2]){
f[i][j]=min(f[i][j],f[i][j-2]+1);
}
if(!s[i][1]&&!s[i][n]&&!s[i][n-1]){
f[i][1]=min(f[i][1],f[i][n-1]+1);
}
if(!s[i][2]&&!s[i][1]&&!s[i][n]){
f[i][2]=min(f[i][2],f[i][n]+1);
}
for(ll j=3;j<=n;j++) if(!s[i][j]&&!s[i][j-1]&&!s[i][j-2]){
f[i][j]=min(f[i][j],f[i][j-2]+1);
}
// for(ll j=1;j<=n;j++){
// cout<<f[i][j]<<" ";
// }
// cout<<endl;
}
// for(ll i=1;i<=n;i++){
// cout<<f[m][i]<<" ";
// }
// cout<<endl;
bool flag=0;
for(ll i=1;i<=n;i++){
if(f[m][i]<INF){
flag=1;
break;
}
}
if(!flag){
printf("-1\n");
continue;
}
ll ans=INF;
for(ll i=1;i<=n;i++){
ll t=((i-f[m][i]-1)%n+n)%n+1;
ans=min(ans,min(t,n-t)+f[m][i]);
if(ans==1630){
cout<<endl;
}
}
printf("%lld\n",ans);
}
return 0;
}