import sys sys.path.append("../common") import aoc data = aoc.data.split("\n") def solve1(args): doubles = 0 triples = 0 for s in data: counts = list((0,) * 26) for c in s: counts[ord(c[0])-97] += 1 if 2 in counts: doubles += 1 if 3 in counts: triples += 1 return doubles * triples def compare(s1, s2): dif = 0 same = list() for i in range(len(s1)): if s1[i] != s2[i]: dif += 1 else: same.append(s1[i]) return (dif, same) def solve2(args): for i in range(len(data)): for j in range(i, len(data)): if i == j: continue res = compare(data[i], data[j]) if res[0] == 1: return "".join(res[1]) aoc.run(solve1, solve2, sols=[3952, "vtnikorkulbfejvyznqgdxpaw"])