#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define li pair<long long , int>
#define iii pair<pair<int , int> , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const long long MOD = 1e9 + 7;
const int INF = 8e7;
const int N = 1e6 + 7;
vector<char> a[N];
int n , m , BIT[N];
struct gv{
int l , r;
char c;
};
vector<gv> cand;
bool cmp(gv x , gv y){
if (x.c != y.c) return x.c < y.c;
if (x.l != y.l) return x.l < y.l;
return x.r > y.r;
}
void ktao(){
for (int u = 0 ; u < m ; ++u){
int i = 1;
while (i <= n){
int j = i;
while (j < n && a[j + 1][u] == a[i][u]) ++j;
gv e;
e.l = i , e.r = j , e.c = a[i][u];
cand.push_back(e);
i = j + 1;
}
}
sort(cand.begin() , cand.end() , cmp);
}
void inp(){
cin >> n >> m;
for (int i = 1 ; i <= n ; ++i){
for (int j = 1 ; j <= m ; ++j){
char c;
cin >> c;
a[i].push_back(c);
}
}
ktao();
}
void update(int x , int val){
while (x > 0){
BIT[x] += val;
x -= x & -x;
}
}
int get(int x){
int res = 0;
while (x <= n){
res += BIT[x];
x += x & -x;
}
return res;
}
int nl(int l , int r){
memset(BIT , 0 , sizeof BIT);
int res = 0;
for (int i = l ; i <= r ; ++i){
int u = cand[i].l , v = cand[i].r;
int tmp = get(v) + 1;
res = max(res , (v - u + 1) * tmp);
update(v , 1);
}
return res;
}
void solve(){
int i = 0;
int res = 0;
while (i < cand.size()){
int j = i;
while (j < cand.size() - 1 && cand[i].c == cand[j + 1].c) ++j;
res = max(res , nl(i , j));
i = j + 1;
}
cout << res;
}
int main(){
// freopen("xhmax.inp" , "r" , stdin);
// freopen("xhmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGlpaSBwYWlyPHBhaXI8aW50ICwgaW50PiAsIGludD4KI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBvbkJpdChtYXNrICwgaSkgKG1hc2sgfCAoMSA8PCBpKSkKI2RlZmluZSBvZmZCaXQobWFzayAsIGkpIChtYXNrICYgKH4oMSA8PCBpKSkpCgpjb25zdCBsb25nIGxvbmcgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IElORiA9IDhlNzsKY29uc3QgaW50IE4gPSAxZTYgKyA3Owp2ZWN0b3I8Y2hhcj4gYVtOXTsKaW50IG4gLCBtICwgQklUW05dOwoKc3RydWN0IGd2ewogICAgaW50IGwgLCByOwogICAgY2hhciBjOwp9OwoKdmVjdG9yPGd2PiBjYW5kOwoKYm9vbCBjbXAoZ3YgeCAsIGd2IHkpewogICAgaWYgKHguYyAhPSB5LmMpIHJldHVybiB4LmMgPCB5LmM7CiAgICBpZiAoeC5sICE9IHkubCkgcmV0dXJuIHgubCA8IHkubDsKICAgIHJldHVybiB4LnIgPiB5LnI7Cn0KCnZvaWQga3RhbygpewogICAgZm9yIChpbnQgdSA9IDAgOyB1IDwgbSA7ICsrdSl7CiAgICAgICAgaW50IGkgPSAxOwogICAgICAgIHdoaWxlIChpIDw9IG4pewogICAgICAgICAgICBpbnQgaiA9IGk7CiAgICAgICAgICAgIHdoaWxlIChqIDwgbiAmJiBhW2ogKyAxXVt1XSA9PSBhW2ldW3VdKSArK2o7CiAgICAgICAgICAgIGd2IGU7CiAgICAgICAgICAgIGUubCA9IGkgLCBlLnIgPSBqICwgZS5jID0gYVtpXVt1XTsKICAgICAgICAgICAgY2FuZC5wdXNoX2JhY2soZSk7CiAgICAgICAgICAgIGkgPSBqICsgMTsKICAgICAgICB9CiAgICB9CiAgICBzb3J0KGNhbmQuYmVnaW4oKSAsIGNhbmQuZW5kKCkgLCBjbXApOwp9Cgp2b2lkIGlucCgpewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICBmb3IgKGludCBqID0gMSA7IGogPD0gbSA7ICsrail7CiAgICAgICAgICAgIGNoYXIgYzsKICAgICAgICAgICAgY2luID4+IGM7CiAgICAgICAgICAgIGFbaV0ucHVzaF9iYWNrKGMpOwogICAgICAgIH0KICAgIH0KICAgIGt0YW8oKTsKfQoKdm9pZCB1cGRhdGUoaW50IHggLCBpbnQgdmFsKXsKICAgIHdoaWxlICh4ID4gMCl7CiAgICAgICAgQklUW3hdICs9IHZhbDsKICAgICAgICB4IC09IHggJiAteDsKICAgIH0KfQoKaW50IGdldChpbnQgeCl7CiAgICBpbnQgcmVzID0gMDsKICAgIHdoaWxlICh4IDw9IG4pewogICAgICAgIHJlcyArPSBCSVRbeF07CiAgICAgICAgeCArPSB4ICYgLXg7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgppbnQgbmwoaW50IGwgLCBpbnQgcil7CiAgICBtZW1zZXQoQklUICwgMCAsIHNpemVvZiBCSVQpOwogICAgaW50IHJlcyA9IDA7CiAgICBmb3IgKGludCBpID0gbCA7IGkgPD0gciA7ICsraSl7CiAgICAgICAgaW50IHUgPSBjYW5kW2ldLmwgLCB2ID0gY2FuZFtpXS5yOwogICAgICAgIGludCB0bXAgPSBnZXQodikgKyAxOwogICAgICAgIHJlcyA9IG1heChyZXMgLCAodiAtIHUgKyAxKSAqIHRtcCk7CiAgICAgICAgdXBkYXRlKHYgLCAxKTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnZvaWQgc29sdmUoKXsKICAgIGludCBpID0gMDsKICAgIGludCByZXMgPSAwOwogICAgd2hpbGUgKGkgPCBjYW5kLnNpemUoKSl7CiAgICAgICAgaW50IGogPSBpOwogICAgICAgIHdoaWxlIChqIDwgY2FuZC5zaXplKCkgLSAxICYmIGNhbmRbaV0uYyA9PSBjYW5kW2ogKyAxXS5jKSArK2o7CiAgICAgICAgcmVzID0gbWF4KHJlcyAsIG5sKGkgLCBqKSk7CiAgICAgICAgaSA9IGogKyAxOwogICAgfQogICAgY291dCA8PCByZXM7Cn0KCmludCBtYWluKCl7Ci8vICAgIGZyZW9wZW4oInhobWF4LmlucCIgLCAiciIgLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oInhobWF4Lm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgZmFzdGVyOwogICAgaW5wKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K