#include<cstdio>
#include<cstring>
using namespace std;
int n,m,f[50+5][50+5],dir[][2]={{1,0},{-1,0},{0,1},{0,-1}},ans=-1;
char map[50+5][50+5];
bool vis[50+5][50+5];
void dfs(int x,int y)
{
f[x][y]++;
for(int i=0;i<4;i++)
{
int xx,yy;
xx=x+dir[i][0],yy=y+dir[i][1];
if(!vis[xx][yy] && (map[xx][yy]!='#' )&& xx>=0 && xx<n && yy>=0 && yy<m)
{
vis[xx][yy]=true;
dfs(xx,yy);
}
}
}
int main()
{
memset(vis,0,sizeof(vis));
memset(f,0,sizeof(f));
scanf("%d%d%",&n,&m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>map[i][j];//请用cin,scanf(),getchar()等 30 40 分,MD改了一晚上 这个题
}
//getchar();
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
memset(vis,0,sizeof(vis));
if(map[i][j]=='R')
vis[i][j]=true,
dfs(i,j);
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
ans=max(ans,f[i][j]);
printf("%d\n",ans);
/*for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(j==m-1)
printf("%c\n",map[i][j]);
else
printf("%c",map[i][j]);*/
return 0;
}