#include <bits/stdc++.h>
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, -1, 0, 1};
using namespace std;
char str[5001];
class Point {
 public:
  int Left;
  int Right;
  int Up;
  int Down;
};
Point f1[5001], f2[5001];
int ans1, ans2, n, m;
int dfs(int p, int tot) {
  int tmp;
  if (str[p] == 'D')
    tmp = f2[p].Down;
  else if (str[p] == 'U')
    tmp = f2[p].Up;
  else if (str[p] == 'L')
    tmp = f2[p].Left;
  else
    tmp = f2[p].Right;
  if (f2[p].Left != -1) f2[f2[p].Left].Right = f2[p].Right;
  if (f2[p].Right != -1) f2[f2[p].Right].Left = f2[p].Left;
  if (f2[p].Up != -1) f2[f2[p].Up].Down = f2[p].Down;
  if (f2[p].Down != -1) f2[f2[p].Down].Up = f2[p].Up;
  if (ans1 == tot) ans2++;
  if (ans1 < tot) {
    ans1 = tot;
    ans2 = 1;
  }
  if (tmp != -1) dfs(tmp, tot + 1);
  return 0;
}
int work() {
  scanf("%d%d", &n, &m);
  getchar();
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) str[i * m + j] = getchar();
    getchar();
  }
  memset(f1, -1, sizeof(f1));
  memset(f2, -1, sizeof(f2));
  int k;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      int p = i * m + j;
      if (str[p] == '.') continue;
      {
        k = i + 1;
        while (str[k * m + j] == '.' && k < n) k++;
        if (k < n) {
          f1[p].Down = k * m + j;
          f1[k * m + j].Up = p;
        }
      }
      {
        k = i - 1;
        while (str[k * m + j] == '.' && k >= 0) k--;
        if (k >= 0) {
          f1[p].Up = k * m + j;
          f1[k * m + j].Down = p;
        }
      }
      {
        k = j - 1;
        while (str[i * m + k] == '.' && k >= 0) k--;
        if (k >= 0) {
          f1[p].Left = i * m + k;
          f1[i * m + k].Right = p;
        }
      }
      {
        k = j + 1;
        while (str[i * m + k] == '.' && k < m) k++;
        if (k < m) {
          f1[p].Right = i * m + k;
          f1[i * m + k].Left = p;
        }
      }
    }
  ans1 = ans2 = 0;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (str[i * m + j] != '.') {
        for (int k = 0; k < 5001; ++k) f2[k] = f1[k];
        dfs(i * m + j, 1);
      }
  printf("%d %d\n", ans1, ans2);
  return 0;
}
int main() {
  work();
  return 0;
}
