#include<bits/stdc++.h> usingnamespace std; constint maxn = 1e3 + 50; char ch[maxn][maxn]; int n, m, ans, st[maxn];
structnode { int h_, w_; } a[maxn][maxn];
voidf(int row){ int sum = 0, top = 0; for (int j = 1; j <= m; ++j) { sum = 0; while (top && a[row][st[top]].h_ >= a[row][j].h_) { sum += a[row][st[top]].w_; ans = max(ans, sum * a[row][st[top--]].h_); } st[++top] = j, a[row][j].w_ += sum; } sum = 0; while (top) { sum += a[row][st[top]].w_; ans = max(ans, sum * a[row][st[top--]].h_); } }
intmain(){ cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> ch[i][j]; a[i][j].w_ = 1; if (ch[i][j] == 'F') a[i][j].h_ = a[i - 1][j].h_ + 1; } } for (int i = 1; i <= n; ++i) f(i); cout << 3 * ans; return0; }