#include <bits/stdc++.h>
using namespace std;
vector<list<int>> EdgeList;
bool visited[1000000];
int region[1000000];
int reg = 0;
vector<int> a;
int n, m;
vector<string> v;
int res = 0;
void dfs(int i, int j) {
  visited[m * i + j] = true;
  region[m * i + j] = reg;
  if (i > 0 && v[i - 1][j] == '*') res++;
  if (i < n - 1 && v[i + 1][j] == '*') res++;
  if (j > 0 && v[i][j - 1] == '*') res++;
  if (j < m - 1 && v[i][j + 1] == '*') res++;
  if (i > 0 && v[i - 1][j] == '.' && !visited[(i - 1) * m + j]) dfs(i - 1, j);
  if (i < n - 1 && v[i + 1][j] == '.' && !visited[(i + 1) * m + j])
    dfs(i + 1, j);
  if (j > 0 && v[i][j - 1] == '.' && !visited[i * m + j - 1]) dfs(i, j - 1);
  if (j < m - 1 && v[i][j + 1] == '.' && !visited[i * m + j + 1]) dfs(i, j + 1);
}
int main() {
  int k;
  cin >> n >> m >> k;
  string s;
  for (int i = 0; i < n; i++) {
    cin >> s;
    v.push_back(s);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (v[i][j] == '.' && !visited[i * m + j]) {
        res = 0;
        dfs(i, j);
        a.push_back(res);
        reg++;
      }
    }
  }
  int u, v;
  for (int i = 0; i < k; i++) {
    scanf("%d", &u);
    scanf("%d", &v);
    u--;
    v--;
    printf("%d\n", a[region[u * m + v]]);
  }
  return 0;
}
