#include<bits/stdc++.h>
using namespace std;
#define re register
#define Re register
#define maxm 100000
#define mod 100007
#define ll long long
int n,m;
char c[1010][1010];
int fa[1010];
int find(int u)
{
if(fa[u]==u) return u;
return fa[u]=find(fa[u]);
}
int o(int&x,int& y)
{
return x*n+y;
}
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if(ch=='-')f=-1; ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0'; ch=getchar();}
return x*f;
}
int amo[1010];
int xx[10]={0,-1,0,1,0};
int yy[10]={0,0,1,0,-1};
signed main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
cin>>n>>m;
for(re int i=1;i<=n*n;i++) fa[i]=i,amo[i]=1;
// getchar();
for(Re int i=1;i<=n;i++)
{
for(re int j=1;j<=n;j++)
cin>>c[i][j];
// c[i][j]=getchar();
// getchar();
}
for(re int i=1;i<=n;i++)
for(re int j=1;j<=n;j++)
{
for(re int k=1;k<=4;k++)
{
int dx=i+xx[k];
int dy=j+yy[k];
if(dx<1||dy<1||dx>n||dy>n) continue;
// int y=c[i][j]-'0';
// int u=c[dx][dy]-'0';
if(c[i][j]!=c[dx][dy])
{
// int p1=o(i,j);
// int p2=o(dx,dy);
int p1=find(o(i,j));
int p2=find(o(dx,dy));
if(p1!=p2)
fa[p2]=p1,amo[p1]+=amo[p2];
}
}
}
for(re int i=1;i<=m;i++)
{
int a,b;
a=read(),b=read();
cout<<amo[find(o(a,b))]<<'\n';
}
return 0;
}