# 1. Load input
n=int(input())
points = []

for _ in range(n):
    x, y = map(int, input().split())
    points.append((x,y))

#######################################################
# points = sorted(points)
points = sorted(points, key=lambda p: (p[0], -p[1]))

# calc fixed x dist total
x_dist = abs(points[0][0] - points[-1][0])

# calc indices when x-cord changes
points_change = []
last_i = 0
for i in range(1, len(points)):
    # print(f"{points[i-1], points[i]=}")
    if points[i-1][0] != points[i][0]:
        points_change.append([last_i, i-1])
        last_i=i
        # print(f"\t{points_change[-1]=}")
points_change.append([last_i, len(points)-1])
# print(points)
# print(points_change)


# sum y dist of points with same x coord
y_dist_same = 0
for i in range(len(points_change)):
    x1, x2 = points_change[i]
    if (x2!=x1):
        y_dist_same += abs(points[x1][1]-points[x2][1])

# # # sum y dist of points with diff x coord
# # # snake like
sign=1
y_dist_diff1 = 0
for i in range(len(points_change)-1):
    sign = (sign+1)%2
    a, b = points_change[i][sign], points_change[i+1][(sign)]
    # print(f"{a} -> {b} {points[a], points[b]=} {abs(points[a][1] - points[b][1])}")
    y_dist_diff1 += abs(points[a][1] - points[b][1])



sign=0
y_dist_diff2 = 0
for i in range(len(points_change)-1):
    sign = (sign+1)%2
    a, b = points_change[i][sign], points_change[i+1][(sign)]
    # print(f"{a} -> {b} {points[a], points[b]=} {abs(points[a][1] - points[b][1])}")
    y_dist_diff2 += abs(points[a][1] - points[b][1])

total1=x_dist+ y_dist_same+y_dist_diff1
total2=x_dist+ y_dist_same+y_dist_diff2

# print(f"{y_dist_diff1, y_dist_diff2=} {x_dist=}, {y_dist_same=}")
# print(f"{total1, total2=}")
print(min(total1, total2))



