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()