#定数
INF=1000000

#入力
N=int(input())
xy=[[int(j) for j in input().split()] for i in range(N)]

#x,y座標とその街を、小さい順に並べる
xCity=[[xy[i][0],i] for i in range(N)]
yCity=[[xy[i][1],i] for i in range(N)]
xCity.sort()
yCity.sort()



#連結済みのx,yの列の最大
xIndex=0
yIndex=0

#連結済みの町
linked=[]
if xCity[0][1]==yCity[0][1]:
	linked.append(xCity[0][1])
	N-=1
else:
	linked.append(xCity[0][1])
	linked.append(yCity[0][1])
	N-=2

#所要金額
ans=0

for roop in range(N):
	#連結済みじゃ無い街を指すまで続ける
	while xCity[xIndex][1] in linked:
		xIndex+=1
	while yCity[yIndex][1] in linked:
		yIndex+=1

	#同じ街を見ている場合
	if xCity[xIndex][1]==yCity[yIndex][1]:
		linked.append(xCity[xIndex][1])
		ans+=min(xCity[xIndex][0]-xCity[xIndex-1][0],yCity[yIndex][0]-yCity[yIndex-1][0])
		continue
	#違う街を見ている場合
	xDist=xCity[xIndex][0] - xCity[xIndex-1][0]
	yDist=yCity[yIndex][0] - yCity[yIndex-1][0]
	if xDist<yDist:
		linked.append(xCity[xIndex][1])
		ans+=xDist
	else:
		linked.append(yCity[yIndex][1])
		ans+=yDist

print(ans)