with open("input.txt") as f: lines = f.read().split('\n') score = 0 incomplete = [] for line in lines: corrupt = False stack = [] for char in line: if char in ['(','[','{','<']: stack.append(char) elif char == ')': prev = stack.pop() if prev != '(': score += 3 corrupt = True break elif char == ']': prev = stack.pop() if prev != '[': score += 57 corrupt = True break elif char == '}': prev = stack.pop() if prev != '{': score += 1197 corrupt = True break elif char == '>': prev = stack.pop() if prev != '<': score += 25137 corrupt = True break if not corrupt: incomplete.append(stack) print(score) scores = [] for stack in incomplete: score = 0 while stack: prev = stack.pop() if prev == '(': score = 5*score + 1 elif prev == '[': score = 5*score + 2 elif prev == '{': score = 5*score + 3 elif prev == '<': score = 5*score + 4 scores.append(score) from statistics import median print(median(scores))