#include<iostream>
#include<cstring>
using namespace std;
int n,m,ans,nx,ny,f,r;
char num[1005][1005];
int _ans[1005][1005];
int dx[4] = {0,0,1,-1};
int dy[4] = {-1,1,0,0};
struct node{
int x,y;
}q[1000005];
void bfs(int i,int j){
f = r = 1;
r++;
q[f].x = i;
q[f].y = j;
_ans[i][j] = true;
ans = 1;
while(f < r){
int a = q[f].x;
int b = q[f].y;
for(int i = 0;i < 4;i++){
nx = a + dx[i];
ny = b + dy[i];
if(nx < 1 || ny < 1 || nx > n || ny > n || _ans[nx][ny] != false || num[nx][ny] == num[a][b])
continue;
_ans[nx][ny] = true;
q[r].x = nx;
q[r].y = ny;
r++;
ans++;
}
f++;
}
for(int t = 1;t <= r;t++)
_ans[q[t].x][q[t].y] = ans;
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
cin >> num[i][j];
for(int i = 1;i <= m;i++){
int i1,j1;
cin >> i1 >> j1;
if(_ans[i1][j1] != 0){
cout << _ans[i1][j1] << endl;
continue;
}
memset(q,0,sizeof(q));
bfs(i1,j1);
cout << _ans[i1][j1] << endl;
}
return 0;
}