func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 520;   int n, m, q, s[4][N][N], id[N], s2[N / 2][N][N], Mx;   char c[N][N];   bool CK(int s[N][N], int x1, int y1, int x2, int y2, int op) {     int dat = s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1];     return op ? dat : dat == (x2 - x1 + 1) * (y2 - y1 + 1);   }   bool ck(int x, int y, int len) {     int x0 = x - len + 1, y0 = y - len + 1, x1 = x + len, y1 = y + len;     return CK(s[0], x0, y0, x, y, 0) && CK(s[1], x0, y + 1, x, y1, 0) &&            CK(s[2], x + 1, y0, x1, y, 0) && CK(s[3], x + 1, y + 1, x1, y1, 0);   }   int read() {     int x = 0, c;     while (!isdigit(c = getchar()))       ;     while (isdigit(c)) x = x * 10 + c - 48, c = getchar();     return x;   }   int main() {     id[ R ] = 0;     id[ G ] = 1;     id[ Y ] = 2;     id[ B ] = 3;     scanf( %d%d%d , &n, &m, &q);     Mx = min(n / 2, m / 2);     for (int i = 1; i <= n; i++) scanf( %s , c[i] + 1);     for (int i = 1; i <= n; i++)       for (int j = 1; j <= m; j++)         for (int k = 0; k < 4; k++)           s[k][i][j] = s[k][i - 1][j] + s[k][i][j - 1] - s[k][i - 1][j - 1] +                        (id[c[i][j]] == k);     for (int i = 1; i <= n; i++)       for (int j = 1; j <= m; j++) {         int mx = min(min(i, n - i), min(j, m - j));         for (int k = 1; k <= Mx; k++)           s2[k][i][j] = s2[k][i - 1][j] + s2[k][i][j - 1] - s2[k][i - 1][j - 1];         for (int k = 1; k <= mx; k++)           if (ck(i, j, k))             s2[k][i][j]++;           else             break;       }     for (int i = 1, x1, y1, x2, y2; i <= q; i++) {       x1 = read(), y1 = read();       x2 = read();       y2 = read();       int l = 1, r = min((x2 - x1 + 1) / 2, (y2 - y1 + 1) / 2), ans = 0;       while (l <= r) {         int mid = (l + r) >> 1;         if (CK(s2[mid], x1 + mid - 1, y1 + mid - 1, x2 - mid, y2 - mid, 1))           ans = mid, l = mid + 1;         else           r = mid - 1;       }       printf( %d n , 4 * ans * ans);     }     return 0;   }   