#include<bits/stdc++.h>
using namespace std;
int main(){
    int c,n;
    cin>>c>>n;
    int m[1000][1000];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            char c;
            cin>>c;m[i][j]=(c=='0'?0:1);
        }
    }
    set<int> s;
    for(int i=0;i<(n+1)/2;i++){
        for(int j=0;j<(n+1)/2;j++){
            if(m[i][j]!=m[n-1-i][j]||m[i][j]!=m[n-1-i][n-1-j]||m[i][j]!=m[i][n-1-j]){
                s.insert(i*n+j);
            }
        }
    }
    int ans=0;
    if(s.empty()){
        ans++;
    }
    c--;
    while(c--){
        int d;
        cin>>d;
        set<int> e;
        for(int i=0;i<d;i++){
            int r,c;
            cin>>r>>c;
            r--;c--;
            m[r][c]^=1;
            e.insert(min(r,n-1-r)*n+min(c,n-1-c));
        }
        for(set<int>::iterator i=e.begin();i!=e.end();i++){
            int h=*i;
            int x=h/n,y=h%n;
            if(m[x][y]==m[x][n-1-y]&&m[x][y]==m[n-1-x][y]&&m[x][y]==m[n-1-x][n-1-y]){
                s.erase(h);
            }else{
                s.insert(h);
            }
        }
        if(s.empty()){
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}
