#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1055;
int up[maxn][maxn];
int ans;
int n,m;
char c[maxn][maxn];
struct node{
int val,pos;
};
bool flag;
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
if(c[i][j]=='F'){
flag=1;
}
}
}
if(!flag){
cout<<0;
return 0;
}
for(int i=1;i<=m;i++){
up[n+1][i]=n+1;
}
for(int i=n;i;i--){
for(int j=1;j<=m;j++){
if(c[i][j]=='R'){
up[i][j]=i;
}
else{
up[i][j]=up[i+1][j];
}
}
}
for(int i=1;i<=n;i++){
stack<node>ncw;
ncw.push(node{up[i][1],1});
for(int j=2;j<=m;j++){
if(ncw.top().val<up[i][j]){
ncw.push(node{up[i][j],j});
}
else if(ncw.top().val>up[i][j]){
int cntt=0;
while((!ncw.empty())&&ncw.top().val>up[i][j]){
cntt++;
ans=max((j-ncw.top().pos)*(ncw.top().val-i),ans);
ncw.pop();
}
ncw.push(node{up[i][j],j});
}
}
while(!ncw.empty()){
ans=max((m-ncw.top().pos+1)*(ncw.top().val-i),ans);
ncw.pop();
}
}
cout<<ans*3;
return 0;
}