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 = Integer.parseInt(sc.next());
	int K = Integer.parseInt(sc.next());
	String str = sc.next();
	Color[] col = new Color[str.length()+3];
	int locnt = 0;
	int collen = 0;
	char prec = str.charAt(0);
	if(N == 1) {
	    if(str.equals("1"))
		System.out.println(1);
	    else {
		if(K>=1) System.out.println(1);
		else System.out.println(0);
	    }
	    return;
	}
	for(int i = 0; i<str.length(); i++) {
	    char c = str.charAt(i);
	    if(c != '0' && i == 0) {
		col[collen] = new Color('0', 0);
		collen++;
	    }
	    if(c == prec) locnt++;
	    else {
		col[collen] = new Color(prec, locnt);
		locnt = 1;
		collen++;
		//System.out.println(col[collen-1].col + " " + col[collen-1].cnt);
	    }
	    if(i == str.length()-1) {
		col[collen] = new Color(c, locnt);
		collen++;
		//System.out.println(col[collen-1].col + " " + col[collen-1].cnt);
	    }
	    prec = c;
	}

	int bcnt = 0;
	int[] ans = new int[collen+1];
	int[] b = new int[collen+1];
	locnt = 0;
	int anscnt = 1;
	for(int i = 0; i<collen; i++) {
	    locnt += col[i].cnt;
	    if(col[i].col == '1') {
		b[anscnt] = col[i].cnt;
		ans[anscnt] = locnt;
		if(anscnt>=1) ans[anscnt] += ans[anscnt-1];
		anscnt++;
		locnt = 0;
		//System.out.println("b " + b[anscnt-1] + " ans " + ans[anscnt-1]);

	    }
	    else if(i==collen-1) {
		ans[anscnt] = locnt;
		if(anscnt>=1) ans[anscnt] += ans[anscnt-1];
		anscnt++;
		//System.out.println("b " + b[anscnt-1] + " ans " + ans[anscnt-1]);
	    }
	}

	int max = 0;
	for(int l = 1; l<=K; l++) {
	for(int i = l; i<anscnt; i++) {
	    max = Math.max(ans[i]-ans[i-l] + b[i-l], max);
        }
	}
	System.out.println(max);

    }
}
class Color {
    char col;
    int cnt;
    Color(char col, int cnt) {
	this.col = col;
	this.cnt = cnt;
    }
}