```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)
}
}
}
```