TESTING = False inp = '9084194700940903797191718247801197019268' def once(values, turnlist): values = list(values) for ai in reversed(range(len(values))): bi = len(values) - ai - 1 diff = (values[bi] - values[ai]) % 10 if diff < 5: turnlist[ai] += diff values[ai] += diff if values[ai] > 9: if ai > 0: values[ai - 1] += values[ai] // 10 values[ai] = values[ai] % 10 return values def is_pal(s): return s == s[::-1] def get(values): values = list(map(int, values)) turns = [0] * len(values) while True: new = once(values, turns) if new == values: break values = new if TESTING: print('-----', *values) for ai in reversed(range(len(values))): bi = len(values) - ai - 1 if ai == bi: pass else: av = int(values[ai]) bv = int(values[bi]) diff = bv - av if diff == 5: if bi > 0 and turns[bi - 1] > 0: turns[bi] += 5 turns[bi - 1] -= 1 values[bi] = (values[bi] + 5) % 10 else: turns[ai] += 5 values[ai] += 5 return turns, values if not TESTING: inp = input() else: print('input', *inp) turns, res = get(inp) if TESTING: print() print('reslt', *res) print('rturn', *res[::-1]) print(is_pal(res)) print() print('turns', *turns) print(sum(turns))