#include <bits/stdc++.h>
using namespace std;
int n, m;
char s[2000][2000];
int vis[2000][2000], t = 1;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
int a[2000 * 2000];
int in(int x, int y) { return 0 <= x && x < n && 0 <= y && y < m; }
void dfs(int x, int y) {
  if (t == vis[x][y]) return;
  vis[x][y] = t;
  for (int i = (0); i < (4); i++) {
    int nx = x + dx[i], ny = y + dy[i];
    if (!in(nx, ny)) continue;
    if (s[nx][ny] == '.') dfs(nx, ny);
  }
}
int main() {
  int k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = (0); i < (n); i++) scanf("%s", s[i]);
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (m); j++)
      if (!vis[i][j] && s[i][j] == '.') {
        dfs(i, j);
        t++;
      }
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (m); j++)
      if (s[i][j] == '.') {
        for (int k = (0); k < (4); k++) {
          int nx = i + dx[k], ny = j + dy[k];
          if (in(nx, ny) && s[nx][ny] == '*') a[vis[i][j]]++;
        }
      }
  for (int i = (0); i < (k); i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    x--;
    y--;
    printf("%d\n", a[vis[x][y]]);
  }
  return 0;
}
