#include <bits/stdc++.h>
using namespace std;
const int maxn = 505;
int sum[4][maxn][maxn];
int cnt[maxn / 2][maxn][maxn];
int n, m;
char s[maxn][maxn];
int opt[maxn][maxn];
int color(int i, int j) {
  if (s[i][j] == 'R')
    return 0;
  else if (s[i][j] == 'G')
    return 1;
  else if (s[i][j] == 'Y')
    return 2;
  else
    return 3;
}
bool inside(int x, int y) { return (1 <= x && x <= n) && (1 <= y && y <= m); }
int count(int r_l, int r_r, int c_l, int c_r, int col) {
  int tot = 0;
  tot += sum[col][r_r][c_r];
  tot -= sum[col][r_r][c_l - 1];
  tot -= sum[col][r_l - 1][c_r];
  tot += sum[col][r_l - 1][c_l - 1];
  return tot;
}
bool all(int r_l, int r_r, int c_l, int c_r, int col) {
  return count(r_l, r_r, c_l, c_r, col) == (r_r - r_l + 1) * (c_r - c_l + 1);
}
bool check(int r_l, int r_r, int c_l, int c_r) {
  int r_m = (r_l + r_r) / 2;
  int c_m = (c_l + c_r) / 2;
  return (all(r_l, r_m, c_l, c_m, 0) && all(r_l, r_m, c_m + 1, c_r, 1) &&
          all(r_m + 1, r_r, c_l, c_m, 2) && all(r_m + 1, r_r, c_m + 1, c_r, 3));
}
int countSquare(int r_l, int r_r, int c_l, int c_r, int col) {
  if (r_l > r_r || c_l > c_r) return 0;
  int tot = 0;
  tot += cnt[col][r_r][c_r];
  tot -= cnt[col][r_r][c_l - 1];
  tot -= cnt[col][r_l - 1][c_r];
  tot += cnt[col][r_l - 1][c_l - 1];
  return tot;
}
bool checkExt(int r_l, int r_r, int c_l, int c_r, int len) {
  if (len == 0) return 1;
  r_l += len - 1;
  c_l += len - 1;
  r_r -= len;
  c_r -= len;
  return countSquare(r_l, r_r, c_l, c_r, len) > 0;
}
int X, Y, P, Q;
int search(int b, int e) {
  if (b == e) {
    return b;
  }
  int m = (b + e + 1) >> 1;
  if (checkExt(X, P, Y, Q, m))
    return search(m, e);
  else
    return search(b, m - 1);
}
int main() {
  int q;
  scanf("%d %d %d", &n, &m, &q);
  for (int i = 1; i <= n; i++) {
    scanf("%s", s[i] + 1);
  }
  for (int c = 0; c < 4; c++) {
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        sum[c][i][j] = (color(i, j) == c);
        sum[c][i][j] += sum[c][i - 1][j];
        sum[c][i][j] += sum[c][i][j - 1];
        sum[c][i][j] -= sum[c][i - 1][j - 1];
      }
    }
  }
  int maxval = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      int r_l = i, c_l = j;
      int r_r = i + 1, c_r = j + 1;
      while (inside(r_l, c_l) && inside(r_r, c_r) &&
             check(r_l, r_r, c_l, c_r)) {
        ++opt[i][j];
        --r_l;
        ++r_r;
        --c_l;
        ++c_r;
      }
      maxval = max(maxval, opt[i][j]);
    }
  }
  for (int c = 1; c <= maxval; c++) {
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        cnt[c][i][j] = (opt[i][j] >= c);
        cnt[c][i][j] += cnt[c][i - 1][j];
        cnt[c][i][j] += cnt[c][i][j - 1];
        cnt[c][i][j] -= cnt[c][i - 1][j - 1];
      }
    }
  }
  while (q--) {
    scanf("%d %d %d %d", &X, &Y, &P, &Q);
    int ans = search(0, maxval);
    printf("%d\n", ans * ans * 4);
  }
  return 0;
}
