import java.util.ArrayList;
import java.util.Scanner;
import org.junit.Test;
public class solution {
@Test
public void test2(){
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int i=0;
while (true) {
String temp = scanner.nextLine();
System.out.println(temp);
i++;
}
}
public static void main(String[] args) {
int flag = shortDis();
System.out.println("flag: "+flag);
}
public static ArrayList<Integer> list=new ArrayList<Integer>();
public static int[] used;
public static int shortDis=Integer.MAX_VALUE;
// 输入n个点
public static int shortDis(){
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
int[][] loc = new int[n][2];
for(int i=0;i<n;i++){
String temp = scanner.nextLine();
String[] tempArr = temp.split(" ");
loc[i][0]=Integer.valueOf(tempArr[0]);
loc[i][1]=Integer.valueOf(tempArr[1]);
}
used= new int[loc.length];
shrotestDis(loc);
return shortDis;
}
public static void shrotestDis(int[][] loc){
if (isAllUsed()) {
shortDis=Math.min(shortDis, countShortDis(loc));
}
for(int i=0;i<loc.length;i++){
if (used[i]==0) {
used[i]=1;
list.add(Integer.valueOf(i));
shrotestDis(loc);
list.remove(Integer.valueOf(i));
used[i]=0;
}
}
}
private static int countShortDis(int[][] loc){
int res=0;
res=res+loc[list.get(0)][0]+loc[list.get(0)][1];
for(int i=1;i<loc.length;i++){
res=res+Math.abs(loc[list.get(i)][0]-loc[list.get(i-1)][0])
+Math.abs(loc[list.get(i)][1]-loc[list.get(i-1)][1]);
}
res=res+loc[list.get(loc.length-1)][0]+loc[list.get(loc.length-1)][1];
return res;
}
private static boolean isAllUsed(){
int res=0;
for(int ele:used){
res+=ele;
}
if (res==used.length) {
return true;
}
return false;
}
}