#include<stdio.h>
using namespace std;
const int N=101000;
char cs[N];
int h,t,n,m,x,y,step,que[N][2],mov[5][2]={{1,0},{0,1},{-1,0},{0,-1}};
bool s[N][N];
int find(int x,int y)
{
bool vis[N][N]={0};
vis[x][y]=true;
h=0,t=1,que[h][0]=x,que[h][1]=y;
while(t-h)
{
int nowx=que[h][0],nowy=que[h][1];
h++;
for(int i=0;i<4;i++)
{
int tox=nowx+mov[i][0],toy=nowy+mov[i][1];
if(tox&&toy&&tox<=n&&toy<=n&&!vis[tox][toy]&&s[tox][toy]!=s[nowx][nowy])
{
vis[tox][toy]=1;
que[t][0]=tox,que[t][1]=toy,t++;
step++;
}
}
}
return step;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%s",cs);
for(int j=1;j<=n;j++)
{
s[i][j]=cs[j-1]-'0';
}
}
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
step=1;
printf("%d\n",find(x,y));
}
}