human
Write me a the Python program you requested given the following:
I found an interesting problem on https://leetcode.com/problems/minimum-number-of-k-consecutive-bit-flips/:
In an array A containing only 0s and 1s, a K-bit flip consists of choosing a (contiguous) subarray of length K and simultaneously changing every 0 in the subarray to 1, and every 1 in the subarray to 0.
Return the minimum number of K-bit flips required so that there is no 0 in the array.  If it is not possible, return -1.
 
Example 1:
Input: A = [0,1,0], K = 1
Output: 2
Explanation: Flip A[0], then flip A[2].

Example 2:
Input: A = [1,1,0], K = 2
Output: -1
Explanation: No matter how we flip subarrays of size 2, we can't make the array become [1,1,1].

Example 3:
Input: A = [0,0,0,1,0,1,1,0], K = 3
Output: 3
Explanation:
Flip A[0],A[1],A[2]: A becomes [1,1,1,1,0,1,1,0]
Flip A[4],A[5],A[6]: A becomes [1,1,1,1,1,0,0,0]
Flip A[5],A[6],A[7]: A becomes [1,1,1,1,1,1,1,1]

 

Note:

1 <= A.length <= 30000
1 <= K <= A.length

I tried it in Python, but could not do it. Can you solve it?
assistant
#Here is the Python program you requested.

class Solution:
    def minKBitFlips(self, A: List[int], k: int) -> int:
        n = len(A)
        count = [0] * n
        ps = 0
        res = 0
        
        for i in range(n-k+1):
            flip = ps + A[i]
            if flip % 2 == 0:
                count[i] = 1
                res += 1
                ps += 1
            
            if i - k + 1 >= 0:
                ps -= count[i-k+1]
        
        
        for i in range(n-k+1, n):
            if (ps + A[i]) % 2 == 0:
                return -1
            ps -= count[i-k+1]
        
        return res