N=int(input())
x=[]
y=[]
for i in range(N):
  a,b=map(int,input().split())
  x+=[ a]
  y+=[ b]
costs=[]
for i in range(N):
  for j in range(i):
    costs+=[(min(abs(x[i]-x[j]),abs(y[i]-y[j])),i,j)]
costs.sort()

S=0#既に引かれた線の本数
ans=0
Dict={}
for i in range(N):
  Dict[i]=i
S=0
while S<N-1:#N-1本効率よく引けば、終わり。
  for cost in costs:
    #もしcost[1]とcost[2]が同じ連結成分に入っていたら、飛ばす。
    #入っていなかったら、ansにcost[0]を追加し、cost[2]の集合はcost[1]に合併し、S+=1する.
    if S==N-1:
      break
    if Dict[cost[1]]!=Dict[cost[2]]:
      ans+=cost[0]
      for i in range(N):
        if Dict[i]==Dict[max(cost[1],cost[2])]:
          Dict[i]=Dict[min(cost[1],cost[2])]
      S+=1
print(ans)
    
    