10 10
.L.....R..
.........U
..D....D..
.R......L.
....L.....
.........D
......U...
D....R....
...U......
........L.
 5 5
DD..D
.....
LU...
U...U
.UL.U
 1 1
U
 5 5
UD..L
RRD..
..RDD
UUL..
DDLRR
 19 23
U..U..R........L...D...
.D.....UL.U.U........DR
..D.U..D....L......R...
D.......RL.L....D.....R
U..D.....U...U.L..D...U
...........L...........
U....U....D.U......LRR.
......RL...U...L.......
DLU..U......UU.U.U.D...
...........D....U......
U...DL......LL.....R...
...U..DD..........LD...
.R.........D.....UU...U
....D......R..........D
.L..........R.....L....
.R........L.LL....R....
..R...D........R....D..
.LR.R..LDU.DDRL......U.
...LL.....D.....DD.....
 11 29
URRUUDDLURLRDDLLRLDUDR.UDLLD.
LRRUDLUDLDULUDL.DURDRR.RRLLRR
D.DUDDURLRDDULDUDDUDDURRDLD.L
.RULURURRDLRRRLUUUU.RDLDLRRRL
.RLDDU.UUULUURURRLLUU.RLDRDUD
LRL.URRRDDURUURUDRRDLDDULRDRL
RLULDU.LRDUDRLDLRDDDDRUUDRDLL
DLUDURRDDUDLLDLLUURLDRUURRLUL
L.RRURRDDRRURRRDDUDRRDULR.LUR
LDLRULURRUULRDUUULLU.LLU.LLLL
DUURDULDDUDLRUUDRUULURLD.RL.U
 2 2
RD
UL
 1 10
LLLLLRRRRR
 3 3
...
...
..R
 17 13
...LD.UR.RUU.
LDLULDUDRRDRL
DD.RRLRUR.UD.
RU...D...LD..
.UR.R...URUUD
.RURD.RLR.D.R
.UUU.RU...UR.
UUUU.R.......
RL.LRU.UD.DUD
LD.DRURRLRDRL
.DR..UULUDDR.
LRLURRUUDDLUR
.LRDDLLR.L.DU
DRUDLLD.LRRU.
..DL.UDL.DUL.
U.DL..D..U.RD
RR.R...RL.L..

2 2
 4 1
 1 1
 8 3
 9 1
 94 1
 4 4
 5 2
 1 1
 24 2

import java.util.Scanner;
public class E74 {
	static String[] s;
	static boolean[][] lu;
	static int ci, cj, n, m;
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		n = in.nextInt();
		m = in.nextInt();
		in.nextLine();
		s = new String[n];
		for (int i = 0; i < n; i++) {
			s[i] = in.nextLine();
		}
		int max = -1, t = 0;
		lu = new boolean[n][m];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (s[i].charAt(j) == '.') continue;
				ci = i;
				cj = j;
				int r = 0;
				while(ci!=-1) {
					lu[ci][cj] = true;
					r+=find();
					
				}
				if (r>max) {
					System.out.printf("%d %d %d\n",r, i, j);
					max = r;
					t = 1;
				}
				else if (r==max) t++;
				for (int h = 0; h < n; h++) {
					for (int v = 0; v < m; v++) {
						lu[h][v] = false;
					}
				}
			}
		}
		System.out.print(max);
		System.out.print(" ");
		System.out.println(t);
	}
	static int find() {
		char c =s[ci].charAt(cj);
		if ( c== '.') {
			ci = -1;
			return 0;
		}
		boolean re = false;
		int r = 1;
		if (c == 'D') {
			for (int i = ci+1; i < n; i++) {
				
				if (!re&& !lu[i][cj] && s[i].charAt(cj) != '.') {
					re  =true;
				}
				if (re) {
					if (s[i].charAt(cj)=='D') {
						r++;
						lu[i][cj] = true;
					}
					else {
						ci = i;
						return r;
					}
				}
			}
		}
		re = false;
		if (c == 'R') {
			for (int j = cj+1; j < m; j++) {
				if (!re && !lu[ci][j] && s[ci].charAt(j) != '.') {
					re = true;
				}
				if (re) {
					if (s[ci].charAt(j)=='R') {
						lu[ci][j] = true;
						r++; 
					}
					else {
						cj = j;
						return r;
					}
				}
			}
		}
		re = false;
		if (c == 'U') {
			for (int i = ci-1; i >= 0; i--) {
				if (!re && !lu[i][cj] && s[i].charAt(cj) != '.') {
					re = true;
				}
				if (re) {
					if (s[i].charAt(cj)=='U') {
						lu[i][cj] = true;
						r++; 
					}
					else {
						ci = i;
						return r;
					}
				}
			}
		}
		re = false;
		if (c == 'L') {
			for (int j = cj-1; j >= 0; j--) {
				if (! re && !lu[ci][j] && s[ci].charAt(j) != '.') {
					re = true;
				}
				if (re) {
					if (s[ci].charAt(j)=='L') {
						r++;
						lu[ci][j] = true;
					}
					else {
						cj = j;
						return r;
					}
				}
			}
		}
		ci = -1;
		return 1;
	}
	
}
