High school student Vasya got a string of length n as a birthday present. This string consists of letters 'a' and 'b' only. Vasya denotesbeauty of the string as the maximum length of a substring (consecutive subsequence) consisting of equal letters.
Vasya can change no more than k characters of the original string. What is the maximum beauty of the string he can achieve?
The first line of the input contains two integers n and k (1 ≤ n ≤ 100 000, 0 ≤ k ≤ n) — the length of the string and the maximum number of characters to change.
The second line contains the string, consisting of letters 'a' and 'b' only.
Print the only integer — the maximum beauty of the string Vasya can achieve by changing no more than k characters.
4 2 abba
4
8 1 aabaabaa
5
In the first sample, Vasya can obtain both strings "aaaa" and "bbbb".
In the second sample, the optimal answer is obtained with the string "aaaaabaa" or with the string "aabaaaaa".
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stack>
#include <bitset>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <algorithm>
#define Si(a) scanf("%d",&a)
#define Sl(a) scanf("%lld",&a)
#define Sd(a) scanf("%lf",&a)
#define Ss(a) scanf("%s",a)
#define Pi(a) printf("%d\n",(a))
#define Pl(a) printf("%lld\n",(a))
#define Pd(a) printf("%lf\n",(a))
#define Ps(a) printf("%s\n",(a))
#define W(a) while(a--)
#define mem(a,b) memset(a,(b),sizeof(a))
#define FOP freopen("data.txt","r",stdin)
#define inf 0x3f3f3f3f
#define maxn 100010
#define mod 1000000007
#define PI acos(-1.0)
#define LL long long
using namespace std;
int a[maxn];
int b[maxn];
int n,k;
int check(int *c,int l,int r)
{
if(c[r]-c[l-1]<=k)return 1;
else return 0;
}
int bs(int *c,int num)
{
int l=1,r=num,mid;
while(l<=r)
{
mid=l+r>>1;
if(check(c,mid,num))r=mid-1;
else l=mid+1;
}
return r+1;
}
int main()
{
int i;
Si(n),Si(k);
a[0]=b[0]=0;
getchar();
char c;
for(i=1;i<=n;i++)
{
scanf("%c",&c);
if(c=='a')
{
a[i]=a[i-1]+1;
b[i]=b[i-1];
}
else if(c=='b')
{
a[i]=a[i-1];
b[i]=b[i-1]+1;
}
}
int ans=0;
for(i=1;i<=n;i++)
{
int x=bs(a,i);
if(ans<i-x+1)
{
ans=i-x+1;
}
}
for(i=1;i<=n;i++)
{
int x=bs(b,i);
if(ans<i-x+1)
{
ans=i-x+1;
}
}
Pi(ans);
return 0;
}