from bisect import bisect_right



N, K = list(map(int, input().split()))

s = eval(input())



t = []

abs_t = []



cur = s[0]

cnt = 0

for ss in s:

    if cur == ss:

        cnt += 1

    else:

        sgn = 1 if cur == '1' else -1

        # 逆立ちでないなら-1

        t.append(cnt * sgn)

        abs_t.append(cnt)



        cur = ss

        cnt = 1

sgn = 1 if cur == '1' else -1

# 逆立ちでないなら-1

t.append(cnt * sgn)

abs_t.append(cnt)



M = len(t)



sgn_cnt = [0]

for tt in t:

    sgn_cnt.append(sgn_cnt[-1] + (1 if tt < 0 else 0))

# 反転が必要な箇所数の累積和



c_abst = [0]

for att in abs_t:

    c_abst.append(c_abst[-1] + att)



# print(t, abs_t, c_abst, sgn_cnt)



ans = 0

for i in range(M):

    ok = bisect_right(sgn_cnt, (K + sgn_cnt[i]))

    ok -= 1

    # print(ok, i, K + sgn_cnt[i])

    # print(c_abst)

    ans = max(ans, c_abst[min(ok, M)] - c_abst[i])

print(ans)

N, K = list(map(int, input().split()))

s = eval(input())



l, r = 0, 0

for i in range(K):

    while r < N and s[r] == '1': r += 1

    while r < N and s[r] == '0': r += 1

# K回直立→逆立ちの反転操作を行う

while r < N and s[r] == '1': r += 1

# 元々逆立ちしている人の右端まで行く

ans = r - l

# 区間の人数をansに代入

while r < N:

    while l < r and s[l] == '1': l += 1

    while l < r and s[l] == '0': l += 1

    # 左端を右にずらす

    # 出来るだけ人数が多くなるように区間を縮めるので、

    # 0==直立の区間直後まで動かす

    while r < N and s[r] == '0': r += 1

    while r < N and s[r] == '1': r += 1

    # 右端を右にずらす

    # できるだけ人数が多くなるように区間を広げるので、

    # 1==逆立ちの区間の直後まで動かす

    ans = max(ans, r - l)

    # 区間の人数をansに代入

print(ans)



# 尺取り法
from bisect import bisect_right

N, K = list(map(int, input().split()))
s = eval(input())
t = []
abs_t = []
cur = s[0]
cnt = 0
for ss in s:
    if cur == ss:
        cnt += 1
    else:
        sgn = 1 if cur == "1" else -1
        # 逆立ちでないなら-1
        t.append(cnt * sgn)
        abs_t.append(cnt)
        cur = ss
        cnt = 1
sgn = 1 if cur == "1" else -1
# 逆立ちでないなら-1
t.append(cnt * sgn)
abs_t.append(cnt)
M = len(t)
sgn_cnt = [0]
for tt in t:
    sgn_cnt.append(sgn_cnt[-1] + (1 if tt < 0 else 0))
# 反転が必要な箇所数の累積和
c_abst = [0]
for att in abs_t:
    c_abst.append(c_abst[-1] + att)
# print(t, abs_t, c_abst, sgn_cnt)
ans = 0
for i in range(M):
    ok = bisect_right(sgn_cnt, (K + sgn_cnt[i]))
    ok -= 1
    # print(ok, i, K + sgn_cnt[i])
    # print(c_abst)
    ans = max(ans, c_abst[min(ok, M)] - c_abst[i])
print(ans)

N, K = list(map(int, input().split()))
s = eval(input())
l, r = 0, 0
for i in range(K):
    while r < N and s[r] == "1":
        r += 1
    while r < N and s[r] == "0":
        r += 1
# K回直立→逆立ちの反転操作を行う
while r < N and s[r] == "1":
    r += 1
# 元々逆立ちしている人の右端まで行く
ans = r - l
# 区間の人数をansに代入
while r < N:
    while l < r and s[l] == "1":
        l += 1
    while l < r and s[l] == "0":
        l += 1
    # 左端を右にずらす
    # 出来るだけ人数が多くなるように区間を縮めるので、
    # 0==直立の区間直後まで動かす
    while r < N and s[r] == "0":
        r += 1
    while r < N and s[r] == "1":
        r += 1
    # 右端を右にずらす
    # できるだけ人数が多くなるように区間を広げるので、
    # 1==逆立ちの区間の直後まで動かす
    ans = max(ans, r - l)
    # 区間の人数をansに代入
print(ans)
# 尺取り法

-from bisect import bisect_right - -t = [] -abs_t = [] -cur = s[0] -cnt = 0 -for ss in s: -    if cur == ss: -        cnt += 1 -    else: -        sgn = 1 if cur == "1" else -1 -        # 逆立ちでないなら-1 -        t.append(cnt * sgn) -        abs_t.append(cnt) -        cur = ss -        cnt = 1 -sgn = 1 if cur == "1" else -1 -# 逆立ちでないなら-1 -t.append(cnt * sgn) -abs_t.append(cnt) -M = len(t) -sgn_cnt = [0] -for tt in t: -    sgn_cnt.append(sgn_cnt[-1] + (1 if tt < 0 else 0)) -# 反転が必要な箇所数の累積和 -c_abst = [0] -for att in abs_t: -    c_abst.append(c_abst[-1] + att) -# print(t, abs_t, c_abst, sgn_cnt) -ans = 0 -for i in range(M): -    ok = bisect_right(sgn_cnt, (K + sgn_cnt[i])) -    ok -= 1 -    # print(ok, i, K + sgn_cnt[i]) -    # print(c_abst) -    ans = max(ans, c_abst[min(ok, M)] - c_abst[i]) +l, r = 0, 0 +for i in range(K): +    while r < N and s[r] == "1": +        r += 1 +    while r < N and s[r] == "0": +        r += 1 +# K回直立→逆立ちの反転操作を行う +while r < N and s[r] == "1": +    r += 1 +# 元々逆立ちしている人の右端まで行く +ans = r - l +# 区間の人数をansに代入 +while r < N: +    while l < r and s[l] == "1": +        l += 1 +    while l < r and s[l] == "0": +        l += 1 +    # 左端を右にずらす +    # 出来るだけ人数が多くなるように区間を縮めるので、 +    # 0==直立の区間直後まで動かす +    while r < N and s[r] == "0": +        r += 1 +    while r < N and s[r] == "1": +        r += 1 +    # 右端を右にずらす +    # できるだけ人数が多くなるように区間を広げるので、 +    # 1==逆立ちの区間の直後まで動かす +    ans = max(ans, r - l) +    # 区間の人数をansに代入 +# 尺取り法