def parse_input() -> tuple[list[int], list[int]]: raw_input = open("input.txt").read() line1 = [] line2 = [] for raw_line in raw_input.splitlines(): num1, num2 = raw_line.split() line1.append(int(num1)) line2.append(int(num2)) return line1, line2 def part_1(): line1, line2 = parse_input() line1.sort() line2.sort() distances = [abs(num1 - num2) for num1, num2 in zip(line1, line2)] result = sum(distances) print(result) def part_2(): line1, line2 = parse_input() appears = {} for line in line2: appears[line] = appears.get(line, 0) + 1 result = sum(appears.get(num, 0) * num for num in line1) print(result) def main() -> int: print("Part 1: ", end="") part_1() print("Part 2: ", end="") part_2() return 0 if __name__ == "__main__": main()