#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int n,m;
char s[1005][1005];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
queue<int> quex;
queue<int> quey;
bool vis[1005][1005];
int ds[1005][1005];
int bfs(int x,int y)
{
memset(vis,false,sizeof(vis));
int dis=0;
quex.push(x);
quey.push(y);
while(!quex.empty())
{
x=quex.front();
y=quey.front();
quex.pop();
quey.pop();
for(int i=0;i<4;i++)
{
int u=x+dx[i],v=y+dy[i];
if(u<0||u>=n||v<0||v>=n||vis[u][v]==true||s[u][v]==s[x][y])
continue;
dis++;
quex.push(u);
quey.push(v);
vis[u][v]=true;
}
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(vis[i][j]==true)
ds[i][j]=dis;
return dis;
}
int main()
{
int qx,qy;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%c",&s[i][j]);
for(int i=0;i<m;i++)
{
scanf("%d%d",&qx,&qy);
qx--,qy--;
if(ds[qx][qy]!=0)
printf("%d\n",ds[qx][qy]);
else
printf("%d\n",bfs(qx,qy));
}
return 0;
}