package main

import (
	arrayqueue "github.com/emirpasic/gods/v2/queues/arrayqueue"
)

func minKBitFlips(bits []int, k int) int {
	q := arrayqueue.New[int]()
	total := 0

	flipped := 0
	for i, bit := range bits {
		if i >= k {
			b, _ := q.Dequeue()
			flipped ^= b
		}

		if flipped != bit {
			q.Enqueue(0)
			continue
		}

		if i+k > len(bits) {
			return -1
		}

		q.Enqueue(1)
		flipped ^= 1
		total++
	}

	return total
}