← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

type Desc []int64

func (a Desc) Len() int           { return len(a) }
func (a Desc) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a Desc) Less(i, j int) bool { return a[i] > a[j] }

func main() {
	in := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(in, &t)
	for i := 0; i < t; i++ {
		var n int
		var k int64
		fmt.Fscan(in, &n, &k)
		var s string
		fmt.Fscan(in, &s)
		var positive []int64
		var sum int64 = 0
		for j := n; j >= 1; j-- {
			var ai int64
			if s[j-1] == '1' {
				ai = 1
			} else {
				ai = -1
			}
			sum += ai
			if j >= 2 && sum > 0 {
				positive = append(positive, sum)
			}
		}
		if len(positive) == 0 {
			fmt.Println(-1)
			continue
		}
		sort.Sort(Desc(positive))
		var accum int64 = 0
		var r int = -1
		for i := 0; i < len(positive); i++ {
			accum += positive[i]
			if accum >= k {
				r = i + 1
				break
			}
		}
		if r == -1 {
			fmt.Println(-1)
		} else {
			fmt.Println(r + 1)
		}
	}
}
```