#include<iostream>
using namespace std;
int n,m,mx[4]={0,1,0,-1},my[4]={1,0,-1,0},ans,ansss[1001][1001];
char nn[1001][1001];
bool nnn[1001][1001],anss[1001][1001];
void dfs(int y,int x){
if(y<1||y>n||x<1||x>n){
return;
}
nnn[y][x]=1;
ans++;
for(int i=0;i<4;i++){
if(nn[y+my[i]][x+mx[i]]!=nn[y][x]&&nnn[y+my[i]][x+mx[i]]==0){
dfs(y+my[i],x+mx[i]);
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int o=1;o<=n;o++){
cin>>nn[i][o];
}
}
for(int i=1;i<=m;i++){
ans=0;
int y,x;
cin>>y>>x;
dfs(y,x);
if(anss[y][x]==0){
dfs(y,x);
anss[y][x]=1;
ansss[y][x]=ans;
}else ans=ansss[y][x];
cout<<ans<<endl;
for(int o=1;o<=n;o++){
for(int p=1;p<=n;p++){
nnn[o][p]=0;
}
}
}
return 0;
}