#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; typedef unsigned long long ull; //#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma comment(linker, "/STACK:36777216") //hdu 扩栈 #define mm(a) memset(a,0,sizeof(a)) #define lr rt<<1 #define rr rt<<1|1 #define sync std::ios::sync_with_stdio(false);std::cin.tie(0); #define inf 0x3f3f3f3f #define eqs 1e-8 #define lb(x) (x&(-x)) #define ch(a) (int(a-'a')+1) #define rep(i, a, b) for(int i=a;i<=b;i++) #define mkp(a, b) make_pair(a,b) #define re register #define umap(a) (a).reserve(1024);(a).max_load_factor(0.25); using namespace std; typedef pair pii; typedef pair pll; typedef pair piii; //const double pi=acos(-1); const int maxn=1005; //const ll Mod=1000000007; const ll Mod=998244353; int fa[maxn]; vectorg[maxn]; char s[maxn]; int findx(int x) { if(fa[x]==x) return x; return fa[x]=findx(fa[x]); } int d[maxn]; int b[maxn]; int c[maxn]; int check(int u) { int odd=0; for(int v:g[u]) { if(d[v]%2) odd++; } if(odd==0) return 2; if(odd==2) return 1; return 0; } int main() { int t; scanf("%d",&t); while(t--) { int n,st; scanf("%d%d",&n,&st); int j; for(int i=1;i<=n;i++) { fa[i]=i; d[i]=0; g[i].clear(); } int u,v,fu,fv; int ans=0; for(int i=1;i<=n-1;i++) { scanf("%s",s); v=i+1; for(j=1;j<=i;j++) { if(s[j-1]=='0') { ans++; u=j; d[u]++; d[v]++; fu=findx(u); fv=findx(v); if(fu!=fv) fa[fu]=fv; } } } for(int i=1;i<=n;i++) { if(d[i]>0) { fu=findx(i); g[fu].push_back(i); } } int cnt=0; for(int i=1;i<=n;i++) { if(g[i].size()>0) b[++cnt]=i; } if(cnt==0) { puts("0"); continue; } int f=0; int odd=0; for(int i=1;i<=cnt;i++) { c[i]=check(b[i]); if(c[i]==0) f=1; if(c[i]==1) odd++; } if(f||odd>1) { puts("-1"); continue; } if(odd==1) { if(d[st]%2==0) { puts("-1"); continue; } else { printf("%d\n",ans+2*(cnt-1)); continue; } } else { if(d[st]==0) { printf("%d\n",ans+2*(cnt)); continue; } else { printf("%d\n",ans+2*(cnt-1)); continue; } } } return 0; }