N people are arranged in a row from left to right.

You are given a string S of length N consisting of `0` and `1`, and a positive integer K.

The i-th person from the left is standing on feet if the i-th character of S is `0`, and standing on hands if that character is `1`.

You will give the following direction at most K times (possibly zero):

Direction: Choose integers l and r satisfying 1 \leq l \leq r \leq N, and flip the l-th, (l+1)-th, ..., and r-th persons. That is, for each i = l, l+1, ..., r, the i-th person from the left now stands on hands if he/she was standing on feet, and stands on feet if he/she was standing on hands.

Find the maximum possible number of consecutive people standing on hands after at most K directions.

Constraints

* N is an integer satisfying 1 \leq N \leq 10^5.
* K is an integer satisfying 1 \leq K \leq 10^5.
* The length of the string S is N.
* Each character of the string S is `0` or `1`.

Input

Input is given from Standard Input in the following format:


N K
S


Output

Print the maximum possible number of consecutive people standing on hands after at most K directions.

Examples

Input

5 1
00010


Output

4


Input

14 2
11101010110011


Output

8


Input

1 1
1


Output

1
import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(), k=sc.nextInt();
        char[] ch=sc.next().toCharArray();
        sc.close();
        int[] s=new int[n];
        int info[][]=new int[n][3];
        int one[]=new int[n];
        int iinfo=0, ione=0;
        int zeros=0, ones=0;
        s[0]=ch[0]=='0'?0:1;
        for(int i=0;i<n;i++){
            if(i<n-1) s[i+1]=ch[i+1]=='0'?0:1;
            //System.out.println("s["+i+"]:"+s[i]);
            if(s[i]==0){
                ones=0;
                zeros++;
                if(i==n-1||s[i+1]==1){
                    info[iinfo][0]=i;
                    info[iinfo][1]=zeros;
                    iinfo++;
                }
                if(i==0){
                    one[ione]=0;
                    ione++;
                }
            }
            else{
                ones++;
                zeros=0;
                if(ones==1){
                    one[ione]=i;
                    ione++;
                }
            }
        }
        // System.out.println("iinfo:"+iinfo);
        // System.out.println("ione:"+ione);
        if(iinfo<=k){
            System.out.println(n);
            System.exit(0);
        }
        int max=0;
        int l,r;
        for(int i=k-1;i<iinfo;i++){
            if(i==iinfo-1) r=ones;
            else r=info[i+1][0]-info[i+1][1]-info[i][0];
            l=info[i][0]-one[i-k+1]+1;
            max=Math.max(max,l+r);
        }
        System.out.println(max);

    }
    
}