def read_lists(filename): left = [] right = [] with open(filename, 'r') as f: for line in f: l, r = line.strip().split() left.append(int(l)) right.append(int(r)) return left, right def calculate_distance(left, right): # Sort both lists sorted_left = sorted(left) sorted_right = sorted(right) # Calculate total distance total_distance = 0 for l, r in zip(sorted_left, sorted_right): total_distance += abs(l - r) return total_distance def calculate_similarity(left, right): # Count occurrences in right list right_counts = {} for num in right: right_counts[num] = right_counts.get(num, 0) + 1 # Calculate similarity score total_similarity = 0 for num in left: # Multiply number by its occurrences in right list total_similarity += num * right_counts.get(num, 0) return total_similarity # Read input left_list, right_list = read_lists("./input.txt") # Part 1 distance = calculate_distance(left_list, right_list) print(str(distance)) # Part 2 similarity = calculate_similarity(left_list, right_list) print(str(similarity))