lines = open("input.txt", 'r').read().splitlines() leng = len(lines) bits = len(lines[0]) def fun(bol): targetCandidates = list(range(0,leng)) rating = 0 target = True for i in range(0, bits): count = 0 vacate = [] for j in targetCandidates: if len(targetCandidates) == 1: o2 = int(lines[j], 2) break elif i != 0 and bool(int(lines[j][i-1])) != target : vacate.append(j) elif bool(int(lines[j][i])): count += 1 targetCandidates = [i for i in targetCandidates if i not in vacate] if count >= len(targetCandidates)/2 and bol: target = True elif count < len(targetCandidates)/2 and not bol: target = True else: target = False if len(targetCandidates) == 2: if bool(int(lines[targetCandidates[0]][i])) == target: return int(lines[targetCandidates[0]], 2) else: return int(lines[targetCandidates[1]], 2) elif len(targetCandidates) == 1: return int(lines[targetCandidates[0]], 2) print(fun(True)*fun(False))