#include<bits/stdc++.h>
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define down(i,l,r) for (int i=l;i>=r;i--)
#define clr(x,y) memset(x,y,sizeof(x))
#define maxn 605000
#define inf (int)1e9
#define ll long long
#define eps 1e-9
#define mm 1000000007ll
#define low(x) x&(-x)
#define pb push_back
#define PII pair<int,int>
using namespace std;
ll read(){
    ll x=0,f=1; char ch=getchar();
    while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
    while (isdigit(ch)){x=x*10+ch-'0'; ch=getchar();}
    return x*f;
}
int n,m,ans,top,s[2005],a[2005][2005],h[2005];
char ch[2005];
int main(){
//	freopen("in.txt","r",stdin);
//	freopen("1.txt","w",stdout);
	n=read(); m=read();
	rep(i,1,n) {
		scanf("%s",ch+1);
		rep(j,1,m) if (ch[j]=='#') a[i][j]=1; else a[i][j]=0;
	}	
	ans=max(n,m);
	rep(i,1,n-1){
		rep(j,1,m-1){
			if (a[i][j]^a[i+1][j]^a[i][j+1]^a[i+1][j+1]) h[j]=0; else h[j]++;
			while (top&&h[j]<=h[s[top]]){
				ans=max(ans,(h[s[top]]+1)*(j-s[top-1]));
				top--;
			}
			s[++top]=j;
		}
		while (top) ans=max(ans,(h[s[top]]+1)*(m-s[top-1])),top--;
	}
	printf("%d\n",ans);
	return 0;
}