#!/usr/bin/env python3 def find(is_lowest): lines = (x.strip() for x in open("input.txt")) for bit in range(12): zeros = [] ones = [] for line in lines: zeros.append(line) if line[bit] == '0' else ones.append(line) lines = zeros if (len(zeros) > len(ones)) != is_lowest else ones if len(lines) <= 1: break return lines[0] gamma = int(''.join(find(True)), 2) epsilon = int(''.join(find(False)), 2) print(gamma * epsilon)