#include<bits/stdc++.h>
using namespace std;
int n,m,e,r;
char a[1005][1005];
int f[1005][1005],b[1005][1005],s=1,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
struct movememt{
int k,l;
};
queue<movememt>p;
void bfs(int x,int y){
movememt now={x,y};
f[x][y]=1;
p.push(now);
while(!p.empty()){
movememt now1=p.front();
p.pop();
for(int i=0;i<4;i++){
int xx=now1.k+dx[i],yy=now1.l+dy[i];
if(xx>0&&xx<=n&&yy>0&&yy<=n&&a[xx][yy]^a[now1.k][now1.l]&&f[xx][yy]==0){
movememt now2={xx,yy};
p.push(now2);
f[xx][yy]=1;
s++;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
while(m--){
scanf("%d%d",&e,&r);
if(b[e][r]==0){
bfs(e,r);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j]==1){
b[i][j]=s;
}
}
}
cout<<s<<'\n';
s=1;
memset(f,0,sizeof(f));
}else{
cout<<b[e][r]<<'\n';
}
}
return 0;
}