#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
node(int a,int b){
x=a;y=b;
}
};
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,-1,1};
int n,m,ind=1,sx,sy;
int rec[1001][1001];
char _map[1001][1001];
map <int,int> hash0;
inline bool ok(int &x1,int &x2,char &c){
return (x1>=1&&x1<=n)&&(x2>=1&&x2<=n)&&(_map[x1][x2]!=c)&&(!rec[x1][x2]);
}
inline int bfs(int x1,int x2){
int ans=1;
queue <node> que;
que.push(node(x1,x2));
rec[x1][x2]=ind;
while(!(que.empty())){
node last=que.front();
que.pop();
int lx=last.x,ly=last.y;
for(int i=0;i<4;i++){
int nx=lx+dx[i],ny=ly+dy[i];
if(ok(nx,ny,_map[lx][ly])){
++ans;
rec[nx][ny]=ind;
que.push(node(nx,ny));
}
}
}
return ans;
}
int main(int argc,const char *argv[]){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%s",_map[i]);
}
for(int i=1;i<=m;i++){
scanf("%d %d",&sx,&sy);
printf("%d\n",hash0[rec[sx][sy]]);
}
return 0;
}