#include <bits/stdc++.h>
using namespace std;
template <typename T>
void Read(T &cn) {
  char c;
  int sig = 1;
  while (!isdigit(c = getchar()))
    if (c == '-') sig = -1;
  cn = c - 48;
  while (isdigit(c = getchar())) cn = cn * 10 + c - 48;
  cn *= sig;
}
template <typename T>
void Write(T cn) {
  if (cn < 0) {
    putchar('-');
    cn = 0 - cn;
  }
  int wei = 0;
  T cm = 0;
  int cx = cn % 10;
  cn /= 10;
  while (cn) cm = cm * 10 + cn % 10, cn /= 10, wei++;
  while (wei--) putchar(cm % 10 + 48), cm /= 10;
  putchar(cx + 48);
}
int f[500 / 2 + 1][500 + 1][500 + 1];
int n, m, q;
int a[500 + 1][500 + 1];
int b[500 + 1][500 + 1];
int jian_c(int cn, int cm, int cx) {
  if (a[cn - cx + 1][cm - cx + 1] != 'R' || b[cn - cx + 1][cm - cx + 1] != cx)
    return 0;
  if (a[cn - cx + 1][cm + 1] != 'G' || b[cn - cx + 1][cm + 1] != cx) return 0;
  if (a[cn + 1][cm - cx + 1] != 'Y' || b[cn + 1][cm - cx + 1] != cx) return 0;
  if (a[cn + 1][cm + 1] != 'B' || b[cn + 1][cm + 1] < cx) return 0;
  return 1;
}
void jian(int cn, int cm) {
  int lin = min(min(cn, cm), min(n - cn, m - cm));
  for (int i = 1; i <= lin; i++) {
    if (!jian_c(cn, cm, i)) return;
    f[i][cn - i + 1][cm - i + 1] = 1;
  }
}
void yuchu() {
  for (int i = 1; i <= n; i++) b[i][m] = 1;
  for (int i = 1; i <= m; i++) b[n][i] = 1;
  for (int i = n - 1; i >= 1; i--)
    for (int j = m - 1; j >= 1; j--) {
      if (a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i + 1][j] &&
          a[i][j] == a[i][j + 1])
        b[i][j] = 1 + min(min(b[i + 1][j], b[i][j + 1]), b[i + 1][j + 1]);
      else
        b[i][j] = 1;
    }
}
int suan(int cn, int cx1, int cy1, int cx2, int cy2) {
  return f[cn][cx2][cy2] - f[cn][cx2][cy1] - f[cn][cx1][cy2] + f[cn][cx1][cy1];
}
int main() {
  Read(n);
  Read(m);
  Read(q);
  for (int i = 1; i <= n; i++) {
    while (!isalpha(a[i][1] = getchar()))
      ;
    for (int j = 2; j <= m; j++) a[i][j] = getchar();
  }
  yuchu();
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) jian(i, j);
  for (int ij = 1; ij <= n / 2; ij++)
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++)
        f[ij][i][j] = f[ij][i - 1][j] + f[ij][i][j - 1] - f[ij][i - 1][j - 1] +
                      f[ij][i][j];
  for (int i = 1; i <= q; i++) {
    int bx1, by1, bx2, by2;
    Read(bx1);
    Read(by1);
    Read(bx2);
    Read(by2);
    int ans = 0;
    int lin = (min(bx2 - bx1, by2 - by1) + 1) / 2;
    for (int j = lin; j >= 1; j--)
      if (suan(j, bx1 - 1, by1 - 1, bx2 - j * 2 + 1, by2 - j * 2 + 1)) {
        ans = 4 * j * j;
        break;
      }
    Write(ans);
    puts("");
  }
  return 0;
}
