#include<bits/stdc++.h>
using namespace std;
int o,x[100001]={0},y[100001]={0},a,b,c,d,n,m,i,ans[1001][1001]={0},mp[1100][1100]={0},used[1001][1001]={0},fy[4]={0,-1,1,0},fx[4]={1,0,0,-1};
queue<int>q;//记录横坐标
queue<int>q1;//记录纵坐标
int main()
{
/*freopen("01.in","r",stdin);
freopen("01.out","w",stdout);*/
cin>>n>>m;
for(i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
scanf("%1d",&mp[i][j]);
}
for(i=1;i<=m;i++)
{
o=1;
cin>>a>>b;
used[a][b]=1;
if(ans[a][b]>0)
{
cout<<ans[a][b]<<endl;
continue;
}
q.push(a);
q1.push(b);
while(!q1.empty())
{
for(int k=0;k<=3;k++)
{
c=q.front()+fx[k];
d=q1.front()+fy[k];
if(c>0&&c<=n&&d>0&&d<=n&&used[c][d]==0&&mp[c][d]!=mp[q.front()][q1.front()])
{
used[c][d]=1;
x[o]=c;
y[o]=d;
o++;
q.push(c);
q1.push(d);
}
}
q.pop();
q1.pop();
}
for(int j=1;j<=o-1;j++)
{
ans[x[j]][y[j]]=o;
}
ans[a][b]=o;
cout<<o<<endl;
}
return 0;
}