#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;
}
