#include<iostream>
using namespace std;
int n,m,x,y,ans,next[4][4]={{1,0},{0,1},{0,-1},{-1,0}};
bool map[1001][1001];
char str;
struct node{
int x2,y2;
}que[100001];
void bfs(int a,int b){
int head=1,tail=1,vis[1001][1001];
ans=1;
que[tail].x2=a;
que[tail].y2=b;
bool k=map[a][b];
tail++;
vis[a][b]=1;
while(tail>head){
for(int i=0;i<4;i++){
int xx=que[head].x2+next[i][0];
int yy=que[head].y2+next[i][1];
if(xx>=1 && xx<=n &&yy>=1 && yy<=n &&vis[xx][yy]==0 && k!=map[xx][yy]){
vis[xx][yy]=1;
que[tail].x2=xx;
que[tail].y2=yy;
k=map[xx][yy];
tail++;
ans++;
}
}
head++;
}
}
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin >> str;
if(str=='1') map[i][j]=1;
else map[i][j]=0;
}
}
for(int i=1;i<=m;i++){
cin >> x >> y;
bfs(x,y);
cout << ans;
}
return 0;
}