#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll H, W;
vector<string> S;
vector<ll> Height, Left, Right;
ll R;

int main() {
  cin >> H >> W;
  S.resize(H);
  for (ll i = 0; i < H; ++i) cin >> S[i];
  Height.resize(W, 1);
  Left.resize(W, 0);
  Right.resize(W, W);
  R = max(H, W);
  for (ll i = 1; i < H; ++i) {
    vector<ll> no;
    for (ll j = 1; j <= W - 1; ++j)
      if ((S[i - 1][j - 1] == S[i - 1][j]) != (S[i][j - 1] == S[i][j])) {
        no.push_back(j);
        Height[j] = 1;
      } else
        ++Height[j];
    for (ll j = 1; j <= W - 1; ++j) {
      if (Height[j] == 1) {
        Left[j] = 0;
        Right[j] = W;
      } else {
        ll y = upper_bound(no.begin(), no.end(), j) - no.begin(), x = y - 1;
        if (x >= 0) Left[j] = max(Left[j], no[x]);
        if (y < no.size()) Right[j] = min(Right[j], no[y]);
      }
      R = max(R, (Right[j] - Left[j]) * Height[j]);
    }
  }
  cout << R << endl;
  return 0;
}
