#include "bits/stdc++.h"
using namespace std;
 
 
const int N = 1005;
 
int B[N][N], n, m, r, c;
int a[N][N];
 
 
void upd(int x, int y, int v) {
  for(int i = x ; i <= n ; i += (i&-i)) {
    for(int j = y ; j <= m ; j += (j&-j)) {
      B[i][j] += v;
    }
  }
}
int sum(int x, int y) {
  int ans = 0;
  for(int i = x ; i > 0 ; i -= (i&-i)) {
    for(int j = y ; j > 0 ; j -= (j&-j)) {
      ans += B[i][j];
    }
  }
  return ans;
}
int update(int x1, int y1, int x2, int y2, int v) {
  upd(x2 + 1, y2 + 1, v);
  upd(x1, y1, v);
  upd(x1, y2 + 1, -v);
  upd(x2 + 1, y1, -v);
}
 
 
int main() {
    ios_base::sync_with_stdio(false);   
    cin.tie(0);cout.tie(0); 
	int t; cin>>t;
	while(t -- ) {
		cin>>n>>m>>r>>c;
		for(int i = 0; i<=n; i++) for(int j = 0; j<=m; j++) B[i][j] = 0;
		for(int i = 1 ; i <= n ; i++) {
		    for(int j = 1 ; j <= m ; j++) {
		    	char ai; cin>>ai;
		    	if(ai == '1') a[i][j] = 1;
		    	else a[i][j] = 0;
				upd(i, j, a[i][j] + a[i-1][j-1] - a[i-1][j] - a[i][j-1]);
		    }
		}
		int ans = 0;
		for(int i = 1 ; i <= n ; i++) {
		    for(int j = 1 ; j <= m ; j++) {
		    	int get = sum(i, j);	
		    	if(get & 1) {
		    		if(i + r - 1 > n || j + c - 1 > m) {
		    			continue;
					}
//					cout<<i<<" "<<j<<" "<<i+r-1<<" "<<j+c-1<<" "<<get<<"\n";
					ans ++;
		    		update(i, j, i + r - 1, j + c - 1, 1);
				}
		    }
		}
		bool ok = 1;
		for(int i = 1; i<=n; i++) {
			for(int j = 1; j<=m; j++) {
				int get = sum(i, j);
				if(get & 1) {
					ok = 0;
					break;
				}
			}
			if(!ok) break;
		}
		if(ok) {
			cout<<ans<<"\n";
		} else {
			cout<<"-1\n";
		}
	}
    return 0;
}     