suppose you have a binary array. You want to find the minimum flips to convert this input binary array to a given desired output. For example, we need to flip one element in [0,0,1] to get to [0,1,1], and we need to flip twice in [0,0,1] to get to [1,1,1]. But there is a caveat. You are given an additional argument called "forbidden patterns" (represented by an array of arrays of similar length to the input), which are intermediate states that are forbidden. In other words, while you are flipping 0's and 1's to get to the desired output, your array should never be equal to a forbidden pattern. Suppose your input is [0,0,1] and target is [1,1,1], but your forbidden pattern is [0,1,1]. You cannot flip [0,0,1] to [0,1,1], as it is a forbidden pattern. You have to find another way around. Consider that with multiple forbidden patterns rather than one.