+"""Find and score bothersome broken brackets and fix the damn things"""
+import pprint
+
+parens = {
+ ")": "(",
+ "]": "[",
+ "}": "{",
+ ">": "<"
+}
+
+parens_rev = {v: k for k, v in parens.items()}
+
+scores = {
+ ")": 1,
+ "]": 2,
+ "}": 3,
+ ">": 4,
+}
+
+line_scores = []
+with open("10_input.txt") as f:
+ for line in f:
+ stack = []
+ broken = False
+ for char in line.strip():
+ if char in "(<[{":
+ stack.append(char)
+ else:
+ if len(stack) == 0 or parens[char] != stack.pop():
+ broken = True
+ break
+
+ if not broken:
+ line_score = 0
+ for i in range(len(stack) - 1, -1, -1):
+ open_char = stack[i]
+ close_char = parens_rev[stack[i]]
+ line_score *= 5
+ line_score += scores[parens_rev[stack[i]]]
+ line_scores.append(line_score)
+
+line_scores.sort()
+middle_i = (len(line_scores) - 1)//2
+print(line_scores[middle_i])