#include<iostream>
#include<queue>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,m,fx[5]={0,1,-1,0,0},fy[5]={0,0,0,-1,1},s,ms[1000001],b[1001][1001],f[1001][1001];
char a[1001][1001];
int bfs(int x,int y)
{
queue<pair<int ,int> >q;
q.push(make_pair(x,y));
b[x][y]=1;
s=1;
while(!q.empty())
{
int u=q.front().first,v=q.front().second;
q.pop();
for(int i=1;i<=4;i++)
{
int nx=fx[i]+u,ny=fy[i]+v;
if(nx<1||nx>n||ny<1||ny>n||b[nx][ny]||a[u][v]==a[nx][ny])continue;
s++;
b[nx][ny]=1;
q.push(make_pair(nx,ny));
}
}
return s;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=getchar();
while(a[i][j]!='0'&&a[i][j]!='1') a[i][j]=getchar();
}
}
for(int i=1;i<=m;i++)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
b[i][j]=0;
s=1;
int x,y;
scanf("%d%d",&x,&y);
ms[i]=bfs(x,y);
}
for(int i=1;i<=m;i++)
printf("%d\n",ms[i]);
return 0;
}