#include <iostream>
#include <cstring>
using namespace std;
int dis[4][2] = {
{1, 0},
{0, 1},
{0, -1},
{-1, 0}
};
int n, m, sum = 1;
int a[1001][1001];
bool vis[1001][1001];
char map[1001][1001];
void dfs(int sx, int sy) {
if (sum >= n * n) return;
for (int i = 0;i < 4;i++) {
int xx = sx + dis[i][0],
yy = sy + dis[i][1];
if (xx >= 1 && yy >= 1 && yy <= n &&
xx <= n && vis[xx][yy] == 0 && map[xx][yy] != map[sx][sy]) {
sum++;
vis[xx][yy] = 1;
dfs(xx, yy);
}
}
}
int main() {
cin >> n >> m;
for (int i = 1;i <= n;i++) {
for (int j = 1;j <= n;j++) {
cin >> map[i][j];
}
}
for (int i = 0;i < m;i++) {
int a, b;
memset(vis, 0, sizeof(vis));
cin >> a >> b;
vis[a][b] = 1;
dfs(a, b);
cout << sum << endl;
sum = 1;
}
}