符合条件的串:最多只能有一个字符出现次数是奇数次
设置一个26位状态表示 字符i出现情况:0出现偶数次|1出现奇数次
i:0->n-1 求出s[0..i]所代表的状态mask, 设满足条件的一个前缀s[0..pre]的状态是mask1
那么 count(mask^mask1)<=1
所以只要把mask每位轮流异或一个1,然后把状态用pre[]存起来,pre[i]表示状态i最早出现的位置
*/
#include<bits/stdc++.h>
using namespace std;
#define N 1000005
int n;
char s[N];
int pre[1<<26];
int main(){
cin>>n>>(s+1);
int mask=0,ans=0;
memset(pre,-1,sizeof pre);
pre[mask]=0;
for(int j=0;j<26;j++)
if(pre[mask^(1<<j)]==-1)
pre[mask^(1<<j)]=0;
for(int i=1;i<=n;i++){
mask^=(1<<(s[i]-'a'));
if(pre[mask]!=-1)
ans=max(ans,i-pre[mask]);
else pre[mask]=i;
for(int j=0;j<26;j++)
if(pre[mask^(1<<j)]==-1)
pre[mask^(1<<j)]=i;
}
cout<<ans<<'\n';
}