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

//#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define FORM(i,a,b) for (int i=(a);i>=(b);i--)
#define FORN(i,a,b) for(int i=(a);i<=(b);i++)
#define ALL(v) (v).begin(),(v).end()
#define MP make_pair
#define INF 1000*1000*1000
#define PI 3.141592653589793
#define EPS 1e-9

char a[5005][5005];

int m,cnt,s;



bool used[5005][5005];

void clr ( bool u[5005][5005], int n, int m )
{
	FOR(i,0,n)
		FOR(j,0,m)
			u[i][j]=0;
}

void path ( int x, int y, int n, int m )
{
	used[x][y]=1;
	cnt++;
	int p1,p2;
	bool fl=0;
	if (a[x][y]=='D')
	{
		FOR(i,x+1,n)
			if (a[i][y]!='.' && !used[i][y])
			{
				p1=i;
				p2=y;
				fl=1;
				break;
			}
		if (fl) path(p1,p2,n,m);
	}
	if (a[x][y]=='U')
	{
		FORM(i,x-1,0)
			if (a[i][y]!='.' && !used[i][y])
			{
				p1=i;
				p2=y;
				fl=1;
				break;
			}
		if (fl) path(p1,p2,n,m);
	}
	if (a[x][y]=='R')
	{
		FOR(j,y+1,m)
			if (a[x][j]!='.' && !used[x][j])
			{
				p1=x;
				p2=j;
				fl=1;
				break;
			}
		if (fl) path(p1,p2,n,m);
	}	
	if (a[x][y]=='L')
	{
		FORM(j,y-1,0)
			if (a[x][j]!='.' && !used[x][j])
			{
				p1=x;
				p2=j;
				fl=1;
				break;
			}
		if (fl) path(p1,p2,n,m);
	}	
}

void main()
{
	//freopen("input.txt","r",stdin);
	//freopen("output.txt","w",stdout);
	int n,m;
	cin>>n>>m;
	FOR(i,0,n)
		FOR(j,0,m)
			cin>>a[i][j];
	FOR(i,0,n)
		FOR(j,0,m)
			if (a[i][j]!='.')
			{
				clr(used,n,m);
				cnt=0;
				path(i,j,n,m);
				if (cnt==m)
				{
					s++;
				}
				if (cnt>m)
				{
					s=0;
					m=cnt;
				}
			}
	cout<<m<<" "<<s;
			
}
