#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
int H,W;
string s[2000];
int a[2000][2000];
int h[2000][2000];
int ans;
int main()
{
	cin>>H>>W;ans=max(H,W);
	for(int i=0;i<H;i++)cin>>s[i];
	for(int i=1;i<H;i++)
	{
		for(int j=1;j<W;j++)
		{
			a[i-1][j-1]=(s[i-1][j-1]==s[i-1][j])==(s[i][j-1]==s[i][j]);
		}
	}
	for(int i=0;i<H-1;i++)
	{
		for(int j=0;j<W-1;j++)
		{
			if(a[i][j]==0)h[i][j]=0;
			else
			{
				if(i==0)h[i][j]=1;
				else h[i][j]=h[i-1][j]+1;
			}
		}
	}
	for(int i=0;i<H-1;i++)
	{
		stack<pair<int,int> >S;
		S.push(make_pair(0,0));
		for(int j=0;j<W;j++)
		{
			int now=0;
			while(S.top().first>h[i][j])
			{
				now+=S.top().second;
				ans=max(ans,(now+1)*(S.top().first+1));
				S.pop();
			}
			S.push(make_pair(h[i][j],now+1));
		}
	}
	cout<<ans<<endl;
}