def distance(point1, point2):
    dist = abs(point1[0] - point2[0]) + abs(point1[1] - point2[1])
    # print("dist: ", point1, point2, dist)
    return dist

num_volcanoes = int(input())

volcanoes = []
for _ in range(num_volcanoes):
    x, y = [int(i) for i in input().split(' ')]
    volcanoes.append((x,y))

m = dict()

for v in volcanoes:
    if m.get(v[0]) == None:
        m[v[0]] = []
    m[v[0]].append(v[1])

for k,v in m.items():
    v.sort()

xs = list(sorted(m.keys()))
xlen = len(xs)

def check(point, i):
    dist = 0
    # print(point, i)
    if i >= xlen: return dist
    if point == (xs[i-1], m[xs[0]][0]):
        dist += abs(m[xs[i-1]][-1] - point[1])
        # if i+1 >= xlen: return dist
        dist += min(
            check((xs[i], m[xs[i]][0]), i+1)
            + distance((xs[i-1], m[xs[i-1]][-1]), (xs[i], m[xs[i]][0])),
            
            check((xs[i], m[xs[i]][-1]), i+1)
            + distance((xs[i-1], m[xs[i-1]][-1]), (xs[i], m[xs[i]][-1]))
        )
    else:
        dist += abs(m[xs[i-1]][0] - point[1])
        # print("check: ", dist, point)
        # if i+1 >= xlen: return dist
        dist += min(
            check((xs[i], m[xs[i]][0]), i+1)
            + distance((xs[i-1], m[xs[i-1]][0]), (xs[i], m[xs[i]][0])),
            
            check((xs[i], m[xs[i]][-1]), i+1)
            + distance((xs[i-1], m[xs[i-1]][0]), (xs[i], m[xs[i]][-1]))
        
        )
    # print(point, dist)
    return dist

dist = min(check((xs[0], m[xs[0]][0]), 1), check((xs[0], m[xs[0]][-1]), 1))
print(dist)

