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.*;

public class E {
	static int dep;
	static int n, m;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		m = sc.nextInt();
		char[][] map = new char[n][];
		String s[] = new String[n];
		for(int i=0; i<n; i++)
			map[i] = (s[i]=sc.next()).toCharArray();
		int max = 0;
		int point[][] = new int[n][m];
		for(int i=0; i<n; i++)
			for(int j=0; j<m; j++) {
				if(map[i][j]=='.') continue;
				dep = 0;
				search(i, j, map);
				point[i][j] = dep;
				max = Math.max(dep, max);
				
				for(int k=0; k<n; k++)
					map[k] = s[k].toCharArray();
			}
		int cnt = 0;
		for(int i=0; i<n; i++)
			for(int j=0; j<m; j++)
				if(point[i][j] == max) cnt++;
		System.out.println(max +" "+ cnt);
	}

	static void search(int i, int j, char[][] map) {
		dep++;
		int dx = 0, dy = 0;
		if(map[i][j] == 'D') {dx=1;dy=0;}
		if(map[i][j] == 'U') {dx=-1;dy=0;}
		if(map[i][j] == 'R') {dx=0;dy=1;}
		if(map[i][j] == 'L') {dx=0;dy=-1;}
		int x = i, y = j;
		map[i][j] = '.';
		for(;;) {
			x = x + dx;
			y = y + dy;
			if(x < 0 || y < 0 || x >= n || y >= m)
				return;
			if(map[x][y] != '.')
				search(x, y, map);
		}
	}
}
