uses math;
Var i,j,t,first,n:longint;
    used:array[0..1111]of boolean;
    a:array[0..1111]of longint;
    tmp,ans:int64;
 procedure go(v,dest:longint;time:int64);
   var d,vv:longint;
     begin
       vv:=v;
       if v<dest then d:=1
       else d:=-1;
       while v<>dest do
         begin
           v:=v+d;
           if used[v] then continue;
           tmp:=tmp+abs(a[vv]-a[v])+time;
           used[v]:=true;
         end;
     end;
  begin
//    assign(input,'cowrun.in');
//    reset(input);
//    assign(output,'cowrun.out');
//    rewrite(output);
    read(n);
    for i:=1 to n do
      read(a[i]);
    inc(n);
    a[n]:=0;
    for i:=1 to n do
      for j:=i+1 to n do
        if a[i]>a[j] then
         begin
           a[0]:=a[i];
           a[i]:=a[j];
           a[j]:=a[0];
         end;
    for i:=1 to n do
      if a[i]=0 then begin first:=i;break;end;
    ans:=maxlongint*maxlongint;
    for i:=1 to n do
      begin
        fillchar(used,sizeof(used),false);
        tmp:=0;
        used[first]:=true;
        go(first,i,0);
        go(i,n,abs(a[i]));
        go(n,1,abs(a[i])+abs(a[i]-a[n]));
        ans:=min(ans,tmp);
        fillchar(used,sizeof(used),false);
        tmp:=0;
        used[first]:=true;
        go(first,i,0);
        go(i,1,abs(a[i]));
        go(1,n,abs(a[i])+abs(a[i]-a[1]));
        ans:=min(ans,tmp);
      end;
    Writeln(ans);
    close(input);
    close(output);
  end.