#include <bits/stdc++.h>
using namespace std;
template <typename T>
void __read(T &a) {
  cin >> a;
}
template <typename T, typename... Args>
void __read(T &a, Args &...args) {
  cin >> a;
  __read(args...);
}
constexpr long long M7 = 1000000007;
constexpr long long M9 = 1000000009;
constexpr long long MFFT = 998244353;
constexpr double PI = 3.14159265358979323846;
template <class T>
void outv(const T &a, char d = ' ', bool nl = false) {
  for (auto &x : a) cout << x << d;
  if (nl) cout << '\n';
}
static mt19937_64 rnd(static_cast<unsigned>(
    chrono::steady_clock::now().time_since_epoch().count()));
auto __fast_io__ = (ios_base::sync_with_stdio(false), cin.tie(nullptr));
int32_t main() {
  int n, m, q;
  __read(n, m, q);
  vector<vector<int>> a(n, vector<int>(m));
  for (int i = 0; i < n; ++i) {
    string s;
    __read(s);
    for (int j = 0; j < m; ++j) {
      if (s[j] == 'R') a[i][j] = 0;
      if (s[j] == 'G') a[i][j] = 1;
      if (s[j] == 'Y') a[i][j] = 2;
      if (s[j] == 'B') a[i][j] = 3;
    }
  }
  vector<vector<vector<int>>> pr_c(
      4, vector<vector<int>>(n + 1, vector<int>(m + 1)));
  for (int c = 0; c < 4; ++c) {
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < m; ++j) {
        if (a[i][j] == c) {
          pr_c[c][i + 1][j + 1] = 1;
        }
        pr_c[c][i + 1][j + 1] += pr_c[c][i][j + 1];
        pr_c[c][i + 1][j + 1] += pr_c[c][i + 1][j];
        pr_c[c][i + 1][j + 1] -= pr_c[c][i][j];
      }
    }
  }
  auto sum = [](int x1, int y1, int x2, int y2, vector<vector<int>> &pr) {
    return pr[x2 + 1][y2 + 1] - pr[x2 + 1][y1] - pr[x1][y2 + 1] + pr[x1][y1];
  };
  vector<vector<vector<int>>> p(min(n, m) / 2 + 1,
                                vector<vector<int>>(n, vector<int>(m)));
  for (int i = 0; i + 1 < n; ++i) {
    for (int j = 0; j + 1 < m; ++j) {
      for (int k = 0;
           i - k + 1 >= 0 && j - k + 1 >= 0 && i + k < n && j + k < m; ++k) {
        if (sum(i - k + 1, j - k + 1, i, j, pr_c[0]) == k * k &&
            sum(i - k + 1, j + 1, i, j + k, pr_c[1]) == k * k &&
            sum(i + 1, j - k + 1, i + k, j, pr_c[2]) == k * k &&
            sum(i + 1, j + 1, i + k, j + k, pr_c[3]) == k * k) {
          p[k][i + 1][j + 1] = 1;
        }
      }
    }
  }
  for (int k = 0; k < p.size(); ++k) {
    for (int i = 1; i < n; ++i) {
      for (int j = 1; j < m; ++j) {
        p[k][i][j] += p[k][i - 1][j];
        p[k][i][j] += p[k][i][j - 1];
        p[k][i][j] -= p[k][i - 1][j - 1];
      }
    }
  }
  for (int qq = 0; qq < q; ++qq) {
    int x1, y1, x2, y2;
    __read(x1, y1, x2, y2);
    x1--, y1--, x2--, y2--;
    int l = 0, r = (min(x2 - x1, y2 - y1) + 1) / 2;
    while (l < r) {
      int mid = r - (r - l) / 2;
      if (sum(x1 + mid - 1, y1 + mid - 1, x2 - mid, y2 - mid, p[mid]) > 0) {
        l = mid;
      } else {
        r = mid - 1;
      }
    }
    cout << l * l * 4 << '\n';
  }
  return 0;
}
