func_code_string: #include <bits/stdc++.h>   using namespace std;   int gr[5000][5], n, m;   string s[5000];   bool isOK(int x, int y) {     if (x >= 0 && x < n && y >= 0 && y < m) return true;     return false;   }   int main() {     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> s[i];     map<char, int> mp;     mp[ U ] = 0;     mp[ R ] = 1;     mp[ D ] = 2;     mp[ L ] = 3;     mp[ . ] = -1;     int d[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         int x = i * m + j;         gr[x][4] = mp[s[i][j]];         if (gr[x][4] != -1)           for (int k = 0; k < 4; k++) {             int x1 = i + d[k][0], y1 = j + d[k][1];             while (isOK(x1, y1) && s[x1][y1] ==  . ) {               x1 += d[k][0];               y1 += d[k][1];             }             if (isOK(x1, y1)) {               int y = x1 * m + y1;               gr[x][k] = y;             } else               gr[x][k] = -1;           }       }     }     int gr2[5000][5];     int ans = 0, num = 0;     for (int i = 0; i < n * m; i++) {       if (gr[i][4] != -1) {         memcpy(gr2, gr, sizeof gr2);         int x = i;         int k = 1;         while (true) {           int y = gr2[x][4];           if (gr2[x][y] == -1) break;           for (int i = 0; i < 4; i++) {             if (gr2[x][i] != -1)               gr2[gr2[x][i]][(i + 2) % 4] = gr2[x][(i + 2) % 4];           }           x = gr2[x][y];           k++;         }         if (k > ans) {           ans = k;           num = 1;         } else if (k == ans)           num++;       }     }     cout << ans <<     << num << endl;     return 0;   }   