#include <bits/stdc++.h>
using namespace std;
long long di[] = {0, 0, 1, -1};
long long dj[] = {1, -1, 0, 0};
long long n, m, q;
char xmap[1100][1100];
bool vis[1100][1100] = {0};
long long grp[1100][1100] = {0};
long long sol[100000] = {0};
long long hall = 1;
long long ans = 0;
void dfs(long long i, long long j, long long si, long long sj) {
  vis[i][j] = 1;
  grp[i][j] = hall;
  if (i > 0 && xmap[i - 1][j] == '*') {
    ans++;
  }
  if (j > 0 && xmap[i][j - 1] == '*') {
    ans++;
  }
  if (i < n - 1 && xmap[i + 1][j] == '*') {
    ans++;
  }
  if (j < m - 1 && xmap[i][j + 1] == '*') {
    ans++;
  }
  if (i > 0 && xmap[i - 1][j] == '.' && !vis[i - 1][j]) {
    dfs(i - 1, j, si, sj);
  }
  if (j > 0 && xmap[i][j - 1] == '.' && !vis[i][j - 1]) {
    dfs(i, j - 1, si, sj);
  }
  if (i < n - 1 && xmap[i + 1][j] == '.' && !vis[i + 1][j]) {
    dfs(i + 1, j, si, sj);
  }
  if (j < m - 1 && xmap[i][j + 1] == '.' && !vis[i][j + 1]) {
    dfs(i, j + 1, si, sj);
  }
  if (i == si && j == sj) {
    cout << ans << endl;
  }
}
int main() {
  cin >> n >> m >> q;
  for (long long i = 0; i < n; i++) {
    cin >> xmap[i];
  }
  for (long long i = 0; i < q; i++) {
    long long x, y;
    cin >> x >> y;
    if (grp[x - 1][y - 1] == 0) {
      memset(vis, 0, sizeof(0));
      dfs(x - 1, y - 1, x - 1, y - 1);
      sol[hall] = ans;
      ans = 0;
      hall++;
    } else
      cout << sol[grp[x - 1][y - 1]] << endl;
  }
  return 0;
}
