#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
struct nod{
int x,y;
}q[1000010];
int dt[1010][1010],fx[5][3]={{0,1},{0,-1},{1,0},{-1,0}};
int js,jl[1010][1010],ans[1000010][3],sum[1010][1010];
int bfs(int a,int b,int n)
{
int j=1,k=1;
q[1].x=a;q[1].y=b;
while(j<=k)
{
for(int i=0;i<4;i++)
if(dt[q[j].x+fx[i][0]][q[j].y+fx[i][1]]!=dt[q[j].x][q[j].y]&&jl[q[j].x+fx[i][0]][q[j].y+fx[i][1]]==0)
if(q[j].x+fx[i][0]>0&&q[j].x+fx[i][0]<=n&&q[j].y+fx[i][1]>0&&q[j].y+fx[i][1]<=n)
{
k++;
q[k].x=q[j].x+fx[i][0];
q[k].y=q[j].y+fx[i][1];
js++;ans[k][0]=q[k].x;ans[k][1]=q[k].y;
jl[q[k].x][q[k].y]=1;
}
j++;
}
for(int i=1;i<=k;i++)
sum[ans[i][0]][ans[i][1]]=js;
return 0;
}
int main()
{
int n,m,a,b;
char p;
cin>>n>>m;
memset(ans,0,sizeof(ans));
memset(sum,-1,sizeof(sum));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>p;
dt[i][j]=p-'0';
}
for(int i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
if(sum[a][b]!=-1)
{
cout<<sum[a][b]<<endl;
continue;
}
js=1;memset(jl,0,sizeof(jl));
jl[a][b]=1;ans[1][0]=a;ans[1][1]=b;
bfs(a,b,n);
cout<<js<<endl;
}
return 0;
}