using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace kp
{
    public class Program
    {
        //static long[,] cmb;
        static int MAX_INT = 1000000007;
        static void Main(string[] args)
        {
            //int N = Int32.Parse(Console.ReadLine());
            int[] input = Console.ReadLine().Split().Select(p => int.Parse(p)).ToArray();
            int N = input[0];
            //Random rnd = new Random();
            //int K = rnd.Next(N / 5);
            //StringBuilder sb = new StringBuilder();
            //for (int i = 0; i < N; i++)
            //{
            //    int r = rnd.Next(2);
            //    sb.Append(r.ToString());
            //}
            //Console.WriteLine(K + " ");// + sb.ToString());
            //string s = sb.ToString();
            int K = input[1];
            string s = Console.ReadLine();
            
            //// Stopwatchクラス生成
            //var sw = new System.Diagnostics.Stopwatch();

            ////-----------------
            //// 計測開始
            //sw.Start();
            List<int> people = new List<int>(); // 偶数番目に逆立ちしている人の数、奇数番目に直立している人の数を入れる
            int pp = 0;
            for(int i=0; i<N; i++)
            {
                if(people.Count%2 == 0)
                {
                    // 逆立ちしている人の数を数える
                    if(s[i] == '1')
                    {
                        pp++;
                    }
                    else
                    {
                        people.Add(pp);
                        pp = 1;
                    }
                }
                else
                {
                    // 直立している人の数を数える
                    if(s[i] == '0')
                    {
                        pp++;
                    }
                    else
                    {
                        people.Add(pp);
                        pp = 1;
                    }
                }
            }
            people.Add(pp);
            people.Add(0);
            people.Add(0);

            //sw.Stop();

            //// 結果表示
            //Console.WriteLine("■処理Bにかかった時間");
            //TimeSpan ts = sw.Elapsed;
            //Console.WriteLine(sw.ElapsedMilliseconds + " ms");
            //sw.Start();

            // 最大K回まで直立している人たちを逆立ちさせる
            int max = 0; // 連続して逆立ちしている人の数の最大値
            int[] dp = new int[N]; // i*2-1～min((i+K-1)*2+2, people.Count-1)までの人を数える
            // dpの初期値を数える
            for(int i=0; i<=Math.Min((K-1)*2+2, people.Count -1); i++)
            {
                dp[0] += people[i];
                max = dp[0];
            }

            for (int i = 0; (i + K) * 2 + 2 < people.Count; i++)
            {
                // dp[i+1]を数える
                dp[i + 1] = dp[i];

                // 最初のほうの人が外れる
                dp[i + 1] -= people[2 * i] + people[2 * i + 1];

                // 後ろのほうの人を追加
                dp[i + 1] += people[(i + K) * 2 + 2] + people[(i + K) * 2 + 1];

                if (max < dp[i + 1])
                    max = dp[i + 1];

            }
                
            Console.WriteLine(max + "");

//            // 計測停止
//sw.Stop();

//// 結果表示
//Console.WriteLine("■処理Aにかかった時間");
//ts = sw.Elapsed;
//Console.WriteLine(sw.ElapsedMilliseconds + " ms");
                
        }
    }
}


Measured memory_bytes: 13336