from math import inf
from copy import copy
num_points = int(input())

points = []
for i in range(num_points):
	point = tuple(int(point) for point in input().split())
	points.append(point)


def hamilton(p1, p2):
	return abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])

def get_min_max(xpos, points):
	min_y = inf
	max_y = -inf
	for point in points:
		if point[0] == xpos:
			if point[1] < min_y:
				min_y = point[1]
			if point[1] > max_y:
				max_y = point[1]
	ret_points = []
	if min_y != inf:
		ret_points.append((xpos, min_y))
	if max_y != -inf and max_y != min_y:
		ret_points.append((xpos, max_y))
	return ret_points
	
start_x = inf
end_x = -inf			
for point in points:
	if point[0] < start_x:
		start_x = point[0]
	if point[0] > end_x:
		end_x = point[0]

trans_dist = 0
prev_end_p = None



cp = None
ep = None
np = None
for xpos in range(start_x, end_x+1):

	c_curr = get_min_max(xpos, points)		
	if not len(c_curr):
		continue;
		
	if xpos == end_x:
		break
	for next_xpos in range(xpos+1, end_x+1):
		c_next = get_min_max(next_xpos, points)		
		if len(c_next):
			break
	distances = []
	#print(c_curr)
	#print(c_next)
	for c_p in c_curr:
		for n_p in c_next:
			distances.append((hamilton(c_p, n_p), c_p, n_p))
	min_d = min(distances, key=lambda x: x[0])
	
	cp = min_d[1]
	np = copy(ep)
	ep = min_d[2]
	
	
	if np != None and ep != None:
		if np[0] != ep[0] or np[1] != ep[1]:
			if len(c_curr) == 2:
				trans_dist += abs(c_curr[0][1] - c_curr[1][1])
	if len(c_curr) == 2:
		trans_dist += abs(c_curr[0][1] - c_curr[1][1])
	trans_dist += min_d[0]
	

print(trans_dist)
		
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
				
	
