#include<iostream>
using namespace std;
int hh[1010][1010],s[1010],l[1010];
char map[1010][1010];
int n,m,ans=0;
void solve(int h[]){
int top=0,len=0;
s[top]=0;l[top]=0;
for(int i=1;i<=m;i++){
if(h[i]>s[top]){
s[++top]=h[i];
l[top]=1;
}
else{
len=0;
while(top&&s[top]>h[i]){
len+=l[top];//把前面比这个高的单独算
ans=max(ans,len*s[top]);
top--;
}
s[++top]=h[i];
l[top]=len+1;//相当于求前面不超过当前高度的面积并
}
}
len=0;
while(top){
len+=l[top];
ans=max(ans,len*s[top]);
top--;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>map[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(map[i][j]=='F')
hh[i][j]=hh[i-1][j]+1;
}
}
for(int i=1;i<=n;i++)
solve(hh[i]);
cout<<3*ans<<endl;
}