#include <bits/stdc++.h>
using namespace std;
inline int max(int a, int b) { return a > b ? a : b; }
inline int min(int a, int b) { return a < b ? a : b; }
char s[5005], ch[] = {'U', 'L', 'R', 'D'};
int x[5005], y[5005], typ[5005], mk[5005][5005], to[5005][4], w[5005][4];
int dx[] = {-1, 0, 0, 1};
int dy[] = {0, -1, 1, 0};
int n, m, tot;
int main() {
  while (scanf("%d %d", &n, &m) == 2) {
    tot = 0;
    getchar();
    for (int i(0); i < (n); ++i) {
      gets(s);
      for (int j(0); j < (m); ++j) {
        if (s[j] != '.') {
          for (int k(0); k < (4); ++k)
            if (s[j] == ch[k]) {
              typ[tot] = k;
              mk[i][j] = tot;
              x[tot] = i;
              y[tot] = j;
              ++tot;
              break;
            }
        } else
          mk[i][j] = -1;
      }
    }
    for (int i(0); i < (tot); ++i)
      for (int j(0); j < (4); ++j) {
        int tx(x[i] + dx[j]), ty(y[i] + dy[j]);
        w[i][j] = -1;
        while (tx >= 0 && tx < n && ty >= 0 && ty < m) {
          if (mk[tx][ty] != -1) {
            w[i][j] = mk[tx][ty];
            break;
          }
          tx += dx[j];
          ty += dy[j];
        }
      }
    int len(-1), num(0);
    for (int i(0); i < (tot); ++i) {
      int t(i), tmp(0);
      memcpy(to, w, sizeof(w));
      while (t != -1) {
        ++tmp;
        for (int j(0); j < (4); ++j)
          if (to[t][j] != -1) to[to[t][j]][3 - j] = to[t][3 - j];
        t = to[t][typ[t]];
      }
      if (tmp > len)
        len = tmp, num = 1;
      else if (tmp == len)
        ++num;
    }
    printf("%d %d\n", len, num);
  }
  return 0;
}
