#include <bits/stdc++.h>
using namespace std;
int const N = 5555;
int n, m;
string s, _s;
vector<int> _L, _R, _U, _D;
vector<int> L, R, U, D;
void rm(int x) {
  if (D[x] != -1) U[D[x]] = U[x];
  if (U[x] != -1) D[U[x]] = D[x];
  if (R[x] != -1) L[R[x]] = L[x];
  if (L[x] != -1) R[L[x]] = R[x];
}
int dfs(int x) {
  if (x < 0) return 0;
  rm(x);
  if (s[x] == 'U') return dfs(U[x]) + 1;
  if (s[x] == 'D') return dfs(D[x]) + 1;
  if (s[x] == 'L') return dfs(L[x]) + 1;
  if (s[x] == 'R') return dfs(R[x]) + 1;
  throw "";
  return 0x12345678;
}
int main() {
  ios_base ::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0; i < n; ++i) {
    cin >> _s;
    s += _s;
  }
  _L.resize(n * m), _R.resize(n * m), _U.resize(n * m), _D.resize(n * m);
  L.resize(n * m), R.resize(n * m), U.resize(n * m), D.resize(n * m);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      int x = i * m + j, l = i * m + j - 1, u = (i - 1) * m + j;
      if (j == 0)
        _L[x] = -1;
      else
        _L[x] = s[l] == '.' ? _L[l] : l;
      if (i == 0)
        _U[x] = -1;
      else
        _U[x] = s[u] == '.' ? _U[u] : u;
    }
  for (int i = n - 1; i >= 0; --i)
    for (int j = m - 1; j >= 0; --j) {
      int x = i * m + j, r = i * m + j + 1, d = (i + 1) * m + j;
      if (j == m - 1)
        _R[x] = -1;
      else
        _R[x] = s[r] == '.' ? _R[r] : r;
      if (i == n - 1)
        _D[x] = -1;
      else
        _D[x] = s[d] == '.' ? _D[d] : d;
    }
  int mx = -1, cnt = 0;
  for (int i = 0; i < n * m; ++i)
    if (s[i] != '.') {
      L = _L, R = _R, U = _U, D = _D;
      int cur = dfs(i);
      if (cur > mx)
        mx = cur, cnt = 1;
      else if (cur == mx)
        ++cnt;
    }
  cout << mx << ' ' << cnt << endl;
  return 0;
}
