import re numbers_pattern = re.compile(r'((?:(? 0} order_numbers = [[int(x) for x in numbers_pattern.findall(line)] for line in input_orders.split('\n')] stacks = {k:[c for c in v] for k,v in starting_stack_strings.items()} for (num, source, dest) in order_numbers: for i in range(0, num): stacks[dest].append(stacks[source].pop()) print('Part 1: ' + ''.join(s[-1] for s in stacks.values())) stacks = {k:[c for c in v] for k,v in starting_stack_strings.items()} for (num, source, dest) in order_numbers: stacks[dest] += stacks[source][-num:] stacks[source] = stacks[source][:-num] print('Part 2: ' + ''.join(s[-1] for s in stacks.values()))