#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
char mapp[1010][1010];
struct nod{
int x,y,z;
};
queue<nod>q;
int ans,vis[1010][1010];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mapp[i][j];
}
}
for(int i=1;i<=m;i++){
ans=1;
cin>>x>>y;
nod begin;
begin.z=mapp[x][y]-'0';
begin.x=x;
begin.y=y;
vis[x][y]=1;
q.push(begin);
while(q.empty()==0){
nod now=q.front();
q.pop();
for(int i=0;i<4;i++){
nod nxt;
nxt.x=now.x+dx[i];
nxt.y=now.y+dy[i];
nxt.z=mapp[nxt.x][nxt.y]-'0';
if(now.z!=nxt.z&&nxt.x>=1&&nxt.x<=n&&nxt.y>=1&&nxt.y<=n&&vis[nxt.x][nxt.y]==0){
q.push(nxt);
vis[nxt.x][nxt.y]=1;
ans++;
}
}
}
cout<<ans<<endl;
while(q.empty()==0){
q.pop();
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
vis[i][j]=0;
}
}
}
return 0;
}