total = 1 number = [] with open("input") as f: for line in f: number.append(line.strip()) number_oxy = list(number) number_co2 = list(number) i = 0 while len(number_oxy) > 1 and i < len(number_oxy[0]): number_1 = len(list(filter(lambda x: x[i] == '1', number_oxy))) total = len(number_oxy) if number_1 >= total - number_1 : keep = '1' else: keep = '0' number_oxy = [ number for number in number_oxy if number[i] == keep] i += 1 i = 0 while len(number_co2) > 1 and i < len(number_co2[0]): number_0 = len(list(filter(lambda x: x[i] == '0', number_co2))) total = len(number_co2) if number_0 > total - number_0 : keep = '1' else: keep = '0' number_co2 = [ number for number in number_co2 if number[i] == keep] i += 1 oxy_rate = int("".join(number_oxy[0]), 2) CO2_rate = int("".join(number_co2[0]), 2) print(oxy_rate * CO2_rate)