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;

/**
 *
 * @author Hector
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    static int n ,m;
    static int puntuacion [];
    static char matriz[][];
    public static void main(String[] args) {
        // TODO code application logic here
         Scanner e=new Scanner(System.in);
        m=e.nextInt();
        n=e.nextInt();
        e.nextLine();
        matriz=new char[m][n];
        boolean usados[][]=new boolean[m][n];
        puntuacion =new int[5001];
        for(int i=0;i<m;i++)
        {
            String sTemp=e.nextLine();
            for(int j=0;j<sTemp.length();j++)
            {
                matriz[i][j]=sTemp.charAt(j);
            }
        }
        int ultimo=1;
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(matriz[i][j]!='.')
                {
                    usados=new boolean[m][n];
                    usados[i][j]=true;
                    DS(i,j,usados,matriz[i][j],1);                    
                }
            }
        }
        for(int i=5000;i>=0;i--)
        {
            if(puntuacion[i]!=0)
            {
                System.out.println(i+" "+puntuacion[i]);
                break;
            }
        }
    }
    public static void DS(int y,int x,boolean usados[][],char direccion,int puntos)
    {
        switch(direccion)
        {
            case 'D':
                if(y+1>=m)
                    return;
                for(int i=y+1;i<m;i++)
                {
                    if(!usados[i][x])
                    {
                        usados[i][x]=true;
                        DS(i,x,usados,matriz[i][x],puntos+1);                            
                    }
                }
                break;
            case'R':
                if(x+1>=n)
                    return;
                for(int i=x+1;i<n;i++)
                {
                    if(!usados[y][i])
                    {
                        usados[y][i]=true;
                        DS(y,i,usados,matriz[y][i],puntos+1);                        
                    }
                }

                break;
            case 'U':
                if(y-1<0)
                    return;
                for(int i=y-1;i>=0;i--)
                {
                    if(!usados[i][x])
                    {
                        usados[i][x]=true;
                        DS(i,x,usados,matriz[i][x],puntos+1);                        
                    }
                }
                break;
            case'L':
                if(x-1<0)
                    return;
                for(int i=x-1;i>=0;i--)
                {
                    if(!usados[y][i])
                    {
                        usados[y][i]=true;
                        DS(y,i,usados,matriz[y][i],puntos+1);                        
                    }
                }
                break;
        }
        puntuacion[puntos]++;
    }

}
