#include<iostream>
#include<string.h>
using namespace std;
char map[1005][1005];
bool check[1005][1005];
int dp[1005][1005];
int x[4] = { 0,0,-1,1 };
int y[4] = { -1,1,0,0 };int m, n;
int cun[100005];
int dfs(int i, int j,int num,int num1) {
int a = num1;
if (check[i][j]==true) return cun[num]=cun[dp[i][j]];
cun[num]++;
check[i][j] = true;
for (int s = 0; s < 4; s++) {
int x1 = j + x[s];
int y1 = i + y[s];
if (map[y1][x1] != map[i][j] && check[y1][x1] == false&&(x1>=1&&y1>=1&&x1<=m&&y1<=m)) {
dp[i][j] = num;
dfs(y1, x1, num, num1 + 1);
}
}
return num1;
}
int main() {
cin >> m >> n;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
cin >> map[i][j];
}
}
memset(dp, -1, sizeof(dp));
for (int i = 1; i <= n; i++) {
int a, b;
cin >> a >> b;
dfs(a, b, i,1);
}
for (int i = 1; i <= n; i++) {
cout << cun[i] << endl;
}
}