#include <bits/stdc++.h>
#define debug cout << "ok\n";
#define SQR(x) (1LL * ((x) * (x)))
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define pli pair<ll,int>
#define vi vector<int>
#define FAST ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int ui;
using namespace std;
const int M = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFLL = (ll)2e18 + 7LL;
const ld PI = acos(-1);
const int dx[] = {1, -1, 0, 0, -1, 1, 1, -1};
const int dy[] = {0, 0, 1, -1, -1, -1, 1, 1};
template<class _, class __>
bool minimize(_ &x, const __ y){
if(x > y){
x = y;
return true;
} else return false;
}
template<class _, class __>
bool maximize(_ &x, const __ y){
if(x < y){
x = y;
return true;
} else return false;
}
template<class _,class __>
void Add(_ &x, const __ y) {
x += y;
if (x >= M) {
x -= M;
}
return;
}
template<class _,class __>
void Diff(_ &x, const __ y) {
x -= y;
if (x < 0) {
x += M;
}
return;
}
//--------------------------------------------------------------
const int MaxN = 1e6+7;
int n,cnt[26],f[MaxN][26][2],g[26][26],bf[26],a[MaxN];
void sol() {
cin >> n;
for (int i=1;i<=n;i++) {
char x;
cin >> x;
a[i] = x - 'a';
}
int res = 0;
memset(cnt,0,sizeof(cnt));
for (int i=1;i<=n;i++) {
cnt[a[i]]++;
bf[a[i]] = i;
for (int j=0;j<26;j++) {
if (bf[j]) {
maximize(res,cnt[a[i]] - cnt[j] - f[bf[j]][a[i]][1]);
maximize(res,cnt[j] - cnt[a[i]] - f[bf[j]][a[i]][0]);
}
}
for (int j=0;j<26;j++) {
minimize(g[a[i]][j],(cnt[a[i]] - 1) - (cnt[j] - (a[i] == j)));
minimize(g[j][a[i]],(cnt[j] - (a[i] == j)) - (cnt[a[i]]-1));
f[i][j][0] = g[a[i]][j];
f[i][j][1] = g[j][a[i]];
}
}
cout << res;
}
int main() {
// freopen("test.inp","r",stdin);
// freopen("test.out","w",stdout);
FAST
int t=1;
// cout << sizeof(f) << '\n';
// cin >> t;
while (t--) sol();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGRlYnVnICAgICBjb3V0IDw8ICJva1xuIjsKI2RlZmluZSBTUVIoeCkgICAgKDFMTCAqICgoeCkgKiAoeCkpKQojZGVmaW5lIE1BU0soaSkgICAoMUxMIDw8IChpKSkKI2RlZmluZSBCSVQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgZmkgICAgICAgIGZpcnN0CiNkZWZpbmUgc2UgICAgICAgIHNlY29uZAojZGVmaW5lIHBiICAgICAgICBwdXNoX2JhY2sKCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGkgcGFpcjxsbCxpbnQ+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTSA9IDFlOSArIDc7CmNvbnN0IGludCBJTkYgPSAxZTkgKyA3Owpjb25zdCBsbCBJTkZMTCA9IChsbCkyZTE4ICsgN0xMOwpjb25zdCBsZCBQSSA9IGFjb3MoLTEpOwoKY29uc3QgaW50IGR4W10gPSB7MSwgLTEsIDAsIDAsIC0xLCAxLCAxLCAtMX07CmNvbnN0IGludCBkeVtdID0gezAsIDAsIDEsIC0xLCAtMSwgLTEsIDEsIDF9OwoKdGVtcGxhdGU8Y2xhc3MgXywgY2xhc3MgX18+CiAgICBib29sIG1pbmltaXplKF8gJngsIGNvbnN0IF9fIHkpewogICAgICAgIGlmKHggPiB5KXsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9CnRlbXBsYXRlPGNsYXNzIF8sIGNsYXNzIF9fPgogICAgYm9vbCBtYXhpbWl6ZShfICZ4LCBjb25zdCBfXyB5KXsKICAgICAgICBpZih4IDwgeSl7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgXyxjbGFzcyBfXz4KICAgIHZvaWQgQWRkKF8gJngsIGNvbnN0IF9fIHkpIHsKICAgICAgICB4ICs9IHk7CiAgICAgICAgaWYgKHggPj0gTSkgewogICAgICAgICAgICB4IC09IE07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIF8sY2xhc3MgX18+CiAgICB2b2lkIERpZmYoXyAmeCwgY29uc3QgX18geSkgewogICAgICAgIHggLT0geTsKICAgICAgICBpZiAoeCA8IDApIHsKICAgICAgICAgICAgeCArPSBNOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjb25zdCBpbnQgTWF4TiA9IDFlNis3OwoKaW50IG4sY250WzI2XSxmW01heE5dWzI2XVsyXSxnWzI2XVsyNl0sYmZbMjZdLGFbTWF4Tl07Cgp2b2lkIHNvbCgpIHsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgY2hhciB4OwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIGFbaV0gPSB4IC0gJ2EnOwogICAgfQogICAgaW50IHJlcyA9IDA7CiAgICBtZW1zZXQoY250LDAsc2l6ZW9mKGNudCkpOwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgY250W2FbaV1dKys7CiAgICAgICAgYmZbYVtpXV0gPSBpOwogICAgICAgIGZvciAoaW50IGo9MDtqPDI2O2orKykgewogICAgICAgICAgICBpZiAoYmZbal0pIHsKICAgICAgICAgICAgICAgIG1heGltaXplKHJlcyxjbnRbYVtpXV0gLSBjbnRbal0gLSBmW2JmW2pdXVthW2ldXVsxXSk7CiAgICAgICAgICAgICAgICBtYXhpbWl6ZShyZXMsY250W2pdIC0gY250W2FbaV1dIC0gZltiZltqXV1bYVtpXV1bMF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCBqPTA7ajwyNjtqKyspIHsKICAgICAgICAgICAgbWluaW1pemUoZ1thW2ldXVtqXSwoY250W2FbaV1dIC0gMSkgLSAoY250W2pdIC0gKGFbaV0gPT0gaikpKTsKICAgICAgICAgICAgbWluaW1pemUoZ1tqXVthW2ldXSwoY250W2pdIC0gKGFbaV0gPT0gaikpIC0gKGNudFthW2ldXS0xKSk7CiAgICAgICAgICAgIGZbaV1bal1bMF0gPSBnW2FbaV1dW2pdOwogICAgICAgICAgICBmW2ldW2pdWzFdID0gZ1tqXVthW2ldXTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IHJlczsKfQoKaW50IG1haW4oKSB7Ci8vCWZyZW9wZW4oInRlc3QuaW5wIiwiciIsc3RkaW4pOwovLwlmcmVvcGVuKCJ0ZXN0Lm91dCIsInciLHN0ZG91dCk7CglGQVNUCglpbnQgdD0xOwovLyAJY291dCA8PCBzaXplb2YoZikgPDwgJ1xuJzsKLy8JY2luID4+IHQ7Cgl3aGlsZSAodC0tKSBzb2woKTsKfQo=