with open(r'day10/input.txt', 'r') as input: lines = input.read().split('\n')[:-1] def push_button(config,button): return tuple(not config[i] if i in button else config[i] for i in range(len(config))) def find_min_tries(target,buttons,current): if buttons == []: return 99999 new = push_button(current,buttons[0]) if new == target: return 1 return min(find_min_tries(target,buttons[1:],current),find_min_tries(target,buttons[1:],new)+1) target = [] buttons = [] for line in lines: split_lines = line.split(' ') target.append(tuple(map(lambda x: True if x == '#' else False,split_lines[0][1:-1]))) buttons.append(list(map(lambda x: set(map(int,(x[1:-1]).split(','))),split_lines[1:-1]))) sum = 0 for i in range(len(lines)): sum += find_min_tries(target[i],buttons[i],tuple(False for _ in target[i])) print(sum)