#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1010;
int t,l[N],r[N],dp[N][N],n,m,a[N][N],ans=0,stk[N],root=0,vis[N];
char x;
int dfs(int i,int x){
if(x==0)return 0;
int siz=dfs(i,l[x]);
siz+=dfs(i,r[x]);
ans=max(ans,(siz+1)*dp[i][x]);
return siz+1;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>x;
if(x=='F'){
a[i][j]=1;
}
else{
a[i][j]=0;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==0){
dp[i][j]=0;
}
else{
dp[i][j]=dp[i-1][j]+1;
}
}
}
for(int i=1;i<=n;i++){
int top=0;
for(int j=1;j<=m;j++){
int k=top;
while(k>0 && dp[i][stk[k]]>dp[i][j]){
k--;
}
if(k!=0){
r[stk[k]]=j;
}
if(k<top){
l[j]=stk[k+1];
}
stk[++k]=j;
top=k;
}
for(int j=1;j<=m;j++)vis[j]=0;
for(int j=1;j<=m;j++){
vis[l[j]]=1;
vis[r[j]]=1;
}
for(int j=1;j<=m;j++){
if(vis[j]==0){
root=j;
break;
}
}
t=dfs(i,root);
}
cout<<ans*3<<"\n";
return 0;
}
/*
4 6
RRRFRR
RRFFRR
FRFFRF
FFFFFF
*/
可随时叫我亦可私信轰炸。