//ID: LRL52  Date: 2019.9.20
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#include<bits/stdc++.h>
using namespace std;
const int N = 2055, M = 2055;
int ans, n, m;
int h[N], a[N][N], l[N], r[N], stk[N];
char s[N];

int main(){
	//freopen("atc081F.in", "r", stdin);
	//freopen("atc081F.out", "w", stdout);
	scanf("%d%d", &n, &m);
	rep(i, 1, n){
		scanf("%s", s + 1);
		rep(j, 1, m)
		    a[i][j] = s[j] == '#' ? 1 : 0;
	}
	ans = max(n, m);
	rep(i, 1, n - 1)
	    rep(j, 1, m - 1)
		    a[i][j] = a[i][j] ^ a[i][j + 1] ^ a[i + 1][j] ^ a[i + 1][j + 1];
	rep(i, 1, n - 1){
		rep(j, 1, m - 1){
			if(a[i][j]) h[j] = 0;
			else ++h[j];
		}
		int top = 0;
		for(int j = m - 1; j >= 1; --j){
			while(top > 0 && h[j] < h[stk[top]]){
				l[stk[top]] = j;
				--top;
			}
			stk[++top] = j;
		}
		while(top > 0) l[stk[top--]] = 0;
		rep(j, 1, m - 1){
			while(top > 0 && h[stk[top]] > h[j]){
				r[stk[top]] = j;
				--top;
			}
			stk[++top] = j;
		}
		while(top > 0) r[stk[top--]] = m;
		rep(j, 1, m - 1){
			if(h[j] == 0) continue;
			ans = max(ans, (r[j] - l[j]) * (h[j] + 1)); //式子是化简后的 
		}
	}
	printf("%d\n", ans);
	return 0;
}