package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
var n, k int
var s string
fmt.Fscan(in, &n, &k, &s)
pos := make([]int, 0, n)
for i := 0; i < n; i++ {
if s[i] == '0' {
pos = append(pos, i)
}
}
feasible := func(b int) bool {
maxDiff := b + 1
bars := 1
cur := 0
for cur < len(pos)-1 {
next := cur
for next+1 < len(pos) && pos[next+1]-pos[cur] <= maxDiff {
next++
}
if next == cur {
return false
}
cur = next
bars++
if bars > k {
return false
}
}
return true
}
lo, hi := 0, n-2
for lo < hi {
mid := (lo + hi) / 2
if feasible(mid) {
hi = mid
} else {
lo = mid + 1
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
fmt.Fprint(out, lo)
out.Flush()
}