#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647;
const double PI = 3.141592653589793;
int licz, maxx, i, j, akt, n, m, L[5005], R[5005], U[5005], D[5005], sum, w;
char dir[5005];
char t[5005];
vector<int> wek;
void hide(int a) {
  L[R[a]] = L[a];
  R[L[a]] = R[a];
  U[D[a]] = U[a];
  D[U[a]] = D[a];
}
void show(int a) {
  L[R[a]] = a;
  R[L[a]] = a;
  U[D[a]] = a;
  D[U[a]] = a;
}
void wypisz() {
  for (int i = 1; i <= n * m; i++)
    printf("%d  %d %d %d %d\n", i, L[i], U[i], R[i], D[i]);
}
int main() {
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%s", &t);
    for (j = 0; j < m; j++) {
      w = i * m + j + 1;
      dir[w] = t[j];
      if (j == 0)
        L[w] = 0;
      else
        L[w] = w - 1;
      if (j == m - 1)
        R[w] = 0;
      else
        R[w] = w + 1;
      if (i == 0)
        U[w] = 0;
      else
        U[w] = w - m;
      if (i == n - 1)
        D[w] = 0;
      else
        D[w] = w + m;
    }
  }
  for (i = 1; i <= m * n; i++)
    if (dir[i] == '.') hide(i);
  for (i = 1; i <= m * n; i++)
    if (dir[i] != '.') {
      akt = i;
      licz = 0;
      while (akt != 0) {
        licz++;
        wek.push_back(akt);
        hide(akt);
        if (dir[akt] == 'L')
          akt = L[akt];
        else if (dir[akt] == 'R')
          akt = R[akt];
        else if (dir[akt] == 'U')
          akt = U[akt];
        else if (dir[akt] == 'D')
          akt = D[akt];
      }
      while (wek.size() > 0) {
        show(wek.back());
        wek.pop_back();
      }
      if (licz == maxx)
        sum++;
      else if (licz > maxx) {
        sum = 1;
        maxx = licz;
      }
    }
  printf("%d %d\n", maxx, sum);
  return 0;
}
