#include #include #include using namespace std; typedef map MCI; typedef queue QC; void erase(MCI& m, QC& q, int& akt) { if (q.empty()) exit(0); char rm=q.front(); q.pop(); if (m[rm]<=0) exit(0); akt--; m[rm]--; while (m.count(rm)>0 && m[rm]>0) erase(m,q,akt); if (m.count(rm)>0) m.erase(rm); } int main() { freopen("broken.in","r",stdin); unsigned int n; cin >> n; while (n) { char c=0; while (c!='\n') cin.get(c); int max=0,akt=0; MCI m; QC q; for (cin.get(c); c!='\n'; cin.get(c)) { if (m.count(c)==0 && m.size()>=n) erase(m,q,akt); q.push(c); akt++; m[c]++; if (akt>max) max=akt; } cout << max << endl; cin >> n; } }