Type
    cuerpos= record
           xi,yi,xf,yf: longint;
           end;

Var
   i,j,n,t1,t2: longint;
   c: array [1..9] of cuerpos;
   vis: array [1..9] of boolean;
   d: array [1..9,1..9] of longint;

Procedure Busca(v,p,m: longint);
          var i: longint;
          begin
          vis[v]:= true;
          if (m= n) then t2:= p;
          for i:= 1 to n do
              if (not vis[i]) and (p+d[v][i]< t2) then
                 Busca(i,p+d[v][i],m+1);
          vis[v]:= false;
          end;

Begin
     readln(input,n);
     t1:= 0;
     for i:= 1 to n do
         begin
         readln(input,c[i].xi,c[i].yi,c[i].xf,c[i].yf);
         Inc(t1, abs(c[i].xf -c[i].xi) + abs(c[i].yf -c[i].yi));
         for j:= i-1 downto 1 do
             begin
             d[i,j]:= abs(c[i].xf -c[j].xi) + abs(c[i].yf -c[j].yi);
             d[j,i]:= abs(c[j].xf -c[i].xi) + abs(c[j].yf -c[i].yi);
             end;
         end;
     t2:= MaxLongint;
     fillchar(vis, sizeof(vis),false);
     for i:= 1 to n do
         Busca(i,c[i].xi+c[i].yi,1);
     writeln(output,t1+t2);
End.