#include <bits/stdc++.h>
using namespace std;
char mp[1005][1005];
int ans[1005][1005];
bool vis[1005][1005];
int n;
int movex[] = { 0,0,-1,1 };
int movey[] = { -1,1,0,0 };
int point[1000005][2];
int cnt;
void dfs(int x, int y)
{
cnt++;
point[cnt][0] = x;
point[cnt][1] = y;
for (int i = 0; i < 4; i++)
{
int xx = x + movex[i];
int yy = y + movey[i];
if (xx >= 1 && xx <= n && yy >= 1 && yy <= n && mp[xx][yy] != mp[x][y] && vis[xx][yy] == false)
{
vis[xx][yy] = true;
dfs(xx, yy);
}
}
}
int main()
{
int m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
scanf("%s", mp[i] + 1);
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (vis[i][j] == 0)
{
vis[i][j] = true;
cnt = 0;
dfs(i, j);
for (int k = 1; k <= cnt; k++)
{
ans[point[k][0]][point[k][1]] = cnt;
}
}
}
}
int x1, y1;
for (int t = 1; t <= m; t++)
{
cin >> x1 >> y1;
cout << ans[x1][y1] << endl;
}
}