#include <bits/stdc++.h>   using namespace std;   const double PI = 2 * acos(0.0);   mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());   mt19937_64 rng_64(chrono::steady_clock::now().time_since_epoch().count());   const string DIGITS =  0123456789 ;   const string ALPH =  abcdefghijklmnopqrstuvwxyz ;   template <class T0, class T1>   inline ostream &operator<<(ostream &out, pair<T0, T1> &a) {     return out <<  {  << a.first <<  ,   << a.second <<  } ;   }   template <class T0, class T1, class T2>   inline ostream &operator<<(ostream &out, tuple<T0, T1, T2> &a) {     return out <<  {  << get<0>(a) <<  ,   << get<1>(a) <<  ,   << get<2>(a)                <<  } ;   }   template <class T0, class T1, class T2, class T3>   inline ostream &operator<<(ostream &out, tuple<T0, T1, T2, T3> &a) {     return out <<  {  << get<0>(a) <<  ,   << get<1>(a) <<  ,   << get<2>(a)                <<  ,   << get<3>(a) <<  } ;   }   template <class T>   inline ostream &operator<<(ostream &out, vector<T> &a) {     out <<  [ ;     for (int i = 0; i < (int)(a.size()); ++i)       out << a[i] << vector<string>{ ,  ,  ]   }[i + 1 == a.size()];     return out;   }   void smain();   signed main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cout << setprecision(10) << fixed;     smain();     return 0;   }   const int N = 510;   int n, m;   vector<string> t;   vector<vector<int> > glav[4];   void kek(char p, int u) {     vector<vector<int> > a(n, vector<int>(m));     auto b = a, c = a;     for (int i = 0; i < n; i++) {       int u = 0;       string s = t[i];       for (int j = 0; j < m; j++) {         if (s[j] == p) {           a[i][j] = 1;           u++;         } else {           a[i][j] = 0;           u = 0;         }         b[i][j] = u;       }     }     for (int i = 0; i < m; i++) {       int u = 0;       for (int j = n - 1; j >= 0; j--) {         if (a[j][i] == 1)           u++;         else           u = 0;         c[j][i] = u;       }     }     vector<vector<int> > ans(n, vector<int>(m));     for (int i = n - 1; i >= 0; i--) {       for (int j = 0; j < m; j++) {         if (a[i][j] == 0) continue;         if (j == 0 || i == n - 1) {           ans[i][j] = 1;         } else {           int v = min(b[i][j], c[i][j]);           ans[i][j] = min(ans[i + 1][j - 1] + 1, v);         }       }     }     glav[u] = ans;   }   int flex[N][N];   int lol[N][N][251];   int get(int r, int c, int k) {     if (r < 0 || c < 0) return 0;     return lol[r][c][k];   }   int get(int r1, int c1, int r2, int c2, int k) {     return get(r2, c2, k) - get(r1 - 1, c2, k) - get(r2, c1 - 1, k) +            get(r1 - 1, c1 - 1, k);   }   void smain() {     int q;     cin >> n >> m >> q;     string s;     for (int i = 0; i < n; i++) {       cin >> s;       t.push_back(s);     }     kek( G , 0);     kek( R , 1);     kek( B , 2);     kek( Y , 3);     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         for (int k = 1;; k++) {           if (i + k >= n || j - k < 0) break;           if (glav[0][i][j] >= k && glav[1][i][j - k] >= k &&               glav[2][i + k][j] >= k && glav[3][i + k][j - k] >= k) {             flex[i][j] = k;           }         }       }     }     for (int k = 1; k <= 250; k++) {       for (int i = 0; i < n; i++) {         int prev = 0;         for (int j = 0; j < m; j++) {           prev += (flex[i][j] == k);           if (i) {             lol[i][j][k] += lol[i - 1][j][k];           }           lol[i][j][k] += prev;         }       }     }     while (q--) {       int r1, c1, r2, c2;       cin >> r1 >> c1 >> r2 >> c2;       r1--;       c1--;       r2--;       c2--;       swap(c1, c2);       int l = 0, r = 251;       while (l + 1 < r) {         int mid = l + r >> 1;         int r3 = r2 - mid * 2 + 1;         int c3 = c2 + mid * 2 - 1;         bool flag = true;         if (r3 < r1 || c3 > c1) flag = false;         if (flag) {           if (get(r1, c3, r3, c1, mid) == 0) flag = false;         }         if (flag)           l = mid;         else           r = mid;       }       cout << 1LL * l * 2 * l * 2 <<   n ;     }   }