from sys import stdin

from collections import deque



N, K = [int(x) for x in stdin.readline().rstrip().split()]

S = deque([int(x) for x in stdin.readline().rstrip()])



# 0の始点と終点のインデックスリスト

# 始点→終点→始点→終点→...の順

# 従って、必ず偶数個になる（インデックスが偶数の場合は始点で、奇数の場合は終点）

index_list = []

if S[0] == 0:

    index_list.append(0)

    

res = []



for i in range(1, len(S)):

    if S[i] != S[i-1]:

        if S[i] == 0:

            index_list.append(i)

        else:

            index_list.append(i-1)



if S[-1] == 0:

    index_list.append(len(S)-1)



if K < len(index_list) // 2:

    for i in range(len(index_list)//2 - K + 1):

        start = 0

        end = 0

        if i == 0:

            start = 0

        else:

            # 1から始まるところ

            # index_list[2*i-1]は0の終点のインデックス

            start = index_list[2*i-1] + 1

        

        if i == len(index_list)//2 - K:

            end = len(S) - 1

        else:

            # 1で終わるところ

            # index_list[2*(i+K)]は0の始点

            end = index_list[2*(i+K)] - 1



        res.append(end-start+1)





# 全部反転できる

if K >= len(index_list)//2:

    res.append(len(S))



print((max(res)))

from sys import stdin



N, K = [int(x) for x in stdin.readline().rstrip().split()]

# -1は終端

S = [int(x) for x in stdin.readline().rstrip()] + [-1]



# 連続して立っている人のカウント

straight_stand_cnt = 0



if S[0] == 0:

    straight_stand_cnt = 1



l = 0

r = 0

ans = -999



while r < N:

    # for DEBUG

    #print(l, r)

    if straight_stand_cnt <= K:

        if S[r] == 1 and S[r+1] == 0:

            straight_stand_cnt += 1



        ans = max(ans, r-l+1)

        r += 1

    else:

        if S[l] == 0 and S[l+1] == 1:

            straight_stand_cnt -= 1

        l += 1      





print(ans)

from sys import stdin
from collections import deque

N, K = [int(x) for x in stdin.readline().rstrip().split()]
S = deque([int(x) for x in stdin.readline().rstrip()])
# 0の始点と終点のインデックスリスト
# 始点→終点→始点→終点→...の順
# 従って、必ず偶数個になる（インデックスが偶数の場合は始点で、奇数の場合は終点）
index_list = []
if S[0] == 0:
    index_list.append(0)
res = []
for i in range(1, len(S)):
    if S[i] != S[i - 1]:
        if S[i] == 0:
            index_list.append(i)
        else:
            index_list.append(i - 1)
if S[-1] == 0:
    index_list.append(len(S) - 1)
if K < len(index_list) // 2:
    for i in range(len(index_list) // 2 - K + 1):
        start = 0
        end = 0
        if i == 0:
            start = 0
        else:
            # 1から始まるところ
            # index_list[2*i-1]は0の終点のインデックス
            start = index_list[2 * i - 1] + 1
        if i == len(index_list) // 2 - K:
            end = len(S) - 1
        else:
            # 1で終わるところ
            # index_list[2*(i+K)]は0の始点
            end = index_list[2 * (i + K)] - 1
        res.append(end - start + 1)
# 全部反転できる
if K >= len(index_list) // 2:
    res.append(len(S))
print((max(res)))

from sys import stdin

N, K = [int(x) for x in stdin.readline().rstrip().split()]
# -1は終端
S = [int(x) for x in stdin.readline().rstrip()] + [-1]
# 連続して立っている人のカウント
straight_stand_cnt = 0
if S[0] == 0:
    straight_stand_cnt = 1
l = 0
r = 0
ans = -999
while r < N:
    # for DEBUG
    # print(l, r)
    if straight_stand_cnt <= K:
        if S[r] == 1 and S[r + 1] == 0:
            straight_stand_cnt += 1
        ans = max(ans, r - l + 1)
        r += 1
    else:
        if S[l] == 0 and S[l + 1] == 1:
            straight_stand_cnt -= 1
        l += 1
print(ans)

-from collections import deque -S = deque([int(x) for x in stdin.readline().rstrip()]) -# 0の始点と終点のインデックスリスト -# 始点→終点→始点→終点→...の順 -# 従って、必ず偶数個になる（インデックスが偶数の場合は始点で、奇数の場合は終点） -index_list = [] +# -1は終端 +S = [int(x) for x in stdin.readline().rstrip()] + [-1] +# 連続して立っている人のカウント +straight_stand_cnt = 0 -    index_list.append(0) -res = [] -for i in range(1, len(S)): -    if S[i] != S[i - 1]: -        if S[i] == 0: -            index_list.append(i) -        else: -            index_list.append(i - 1) -if S[-1] == 0: -    index_list.append(len(S) - 1) -if K < len(index_list) // 2: -    for i in range(len(index_list) // 2 - K + 1): -        start = 0 -        end = 0 -        if i == 0: -            start = 0 -        else: -            # 1から始まるところ -            # index_list[2*i-1]は0の終点のインデックス -            start = index_list[2 * i - 1] + 1 -        if i == len(index_list) // 2 - K: -            end = len(S) - 1 -        else: -            # 1で終わるところ -            # index_list[2*(i+K)]は0の始点 -            end = index_list[2 * (i + K)] - 1 -        res.append(end - start + 1) -# 全部反転できる -if K >= len(index_list) // 2: -    res.append(len(S)) -print((max(res))) +    straight_stand_cnt = 1 +l = 0 +r = 0 +ans = -999 +while r < N: +    # for DEBUG +    # print(l, r) +    if straight_stand_cnt <= K: +        if S[r] == 1 and S[r + 1] == 0: +            straight_stand_cnt += 1 +        ans = max(ans, r - l + 1) +        r += 1 +    else: +        if S[l] == 0 and S[l + 1] == 1: +            straight_stand_cnt -= 1 +        l += 1 +print(ans)