#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(x) (x).begin(),(x).end()
#pragma GCC optimize ("-O3")
using namespace std; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); }
typedef long long ll; const int inf = INT_MAX / 2; const ll infl = 1LL << 60;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a = b; return 1; } return 0; }
//---------------------------------------------------------------------------------------------------
/*---------------------------------------------------------------------------------------------------
　　　　　　　　　　　 ∧＿∧  
　　　　　 ∧＿∧ 　（´<_｀ ）　 Welcome to My Coding Space!
　　　　 （ ´_ゝ`）　/　 ⌒i     
　　　　／　　　＼　 　 |　|     
　　　 /　　 /￣￣￣￣/　　|  
　 ＿_(__ﾆつ/　    ＿/ .| .|＿＿＿＿  
　 　　　＼/＿＿＿＿/　（u　⊃  
---------------------------------------------------------------------------------------------------*/




int C, N, P[1010][1010];
int ok;
//---------------------------------------------------------------------------------------------------
int check(int x, int y) {
    if (P[y][x] == P[N - 1 - y][x] and P[y][x] == P[N - 1 - y][N - 1 - x] and P[y][x] == P[y][N - 1 - x]) return 1;
    return 0;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> C >> N;
    rep(y, 0, N) {
        string s; cin >> s;
        rep(x, 0, N) P[y][x] = s[x] - '0';
    }

    rep(y, 0, N / 2) rep(x, 0, N / 2) if (check(x, y)) ok++;
    
    int ans = 0;
    if (ok == N * N / 4) ans++;
    rep(c, 0, C - 1) {
        int D; cin >> D;
        rep(d, 0, D) {
            int r, c; cin >> r >> c;
            r--; c--;

            if (check(c, r)) ok--;
            
            P[r][c] = 1 - P[r][c];

            if (check(c, r)) ok++;
        }
        if (ok == N * N / 4) ans++;
    }
    cout << ans << endl;
}
