#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1010
char grid[N][N];
int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
int m,n,sx,sy,num=0,qz[N*N];
bool vis[N][N];
void floodfill(int x,int y,int step){
vis[x][y]=step;
num++;
for(int i=0;i<4;i++){
int kx=x+dx[i];
int ky=y+dy[i];
if(!vis[kx][ky]&&kx>0&&kx<=n&&ky>0&&ky<=n&&grid[x][y]!=grid[kx][ky]) floodfill(kx,ky,step);
}
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>grid[i][j];
}
}
int cnt=1;//染色记忆化
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!vis[i][j]){
floodfill(i,j,cnt);
qz[cnt++]=num;
}
}
}
while(m--){
cin>>sx>>sy;
cout<<qz[vis[sx][sy]]<<endl;
}
return 0;
}