# Leetcode 672 ```python= class Solution: def flipLights(self, n: int, presses: int) -> int: if n == 1: return 1 if presses == 0 else 2 if n == 2: if presses == 0: return 1 elif presses == 1: return 3 else: return 4 start = 0 mask = [0] * 4 if n == 3: start = 7 mask[0] = 7 # 111 mask[1] = 5 # 101 mask[2] = 2 # 010 mask[3] = 1 # 001 elif n == 4: start = 15 # 1111 mask[0] = 15 # 1111 mask[1] = 5 # 0101 mask[2] = 10 # 1010 mask[3] = 9 # 1001 elif n == 5: start = 31 # 11111 mask[0] = 31 # 11111 mask[1] = 21 # 10101 mask[2] = 10 # 01010 mask[3] = 9 # 01001 else: start = 63 # 111111 mask[0] = 63 # 111111 mask[1] = 21 # 010101 mask[2] = 42 # 101010 mask[3] = 9 # 001001 state = [] for i in range(presses + 1): state.append([False] * (start + 1)) self.search(state, mask, start, presses, 0) ans = 0 for i in range(start + 1): ans += state[presses][i] return ans def search(self, state, mask, cur, presses, count): if count == presses + 1: return if state[count][cur]: return state[count][cur] = True for m in mask: self.search(state, mask, cur ^ m, presses, count + 1) ```