ns = [int(n) for n in text.split(',')] lo, *_, hi = sorted(ns) def mono_min(g): y = next(g) for x in g: if x > y: return y y = x ans1 = mono_min(sum(abs(n - m) for m in ns) for n in range(lo, hi)) range_sum = lambda n: int(n * (n + 1) / 2) ans2 = mono_min(sum(range_sum(abs(n - m)) for m in ns) for n in range(lo, hi))