from functools import cache


def dist(l, r):
    lx, ly = l
    rx, ry = r

    return abs(lx-rx) + abs(ly-ry)

inputs = int(input())

points = dict()
xs = []

for _ in range(inputs):
    line = input().split(' ')
    x, y = int(line[0]), int(line[1])
    lst = points.get(x, [])
    lst.append((x, y))
    points[x] = lst
    xs.append(x)

total = 0

xs.sort()


@cache
def solve(idx, start_idx):
    current_line = points[xs[idx]]
    current_line.sort()
    d = dist(current_line[0], current_line[-1])

    if idx == 0:
        return d

    prev = points[xs[idx-1]]
    prev.sort()

    upper = prev[-1]
    lower = prev[0]

    current = current_line[start_idx]

    u_dist = solve(idx-1, -1) + dist(current, upper)
    l_dist = solve(idx-1, 0) + dist(current, lower)

    d += min(u_dist, l_dist)

    return d


last_line = points[xs[-1]]
last_line.sort()

# total = dist(last_line[0], last_line[-1])

if len(xs) > 1:
    total += min(solve(len(xs)-1, 0), solve(len(xs)-1, -1))

print(total)

