{
    Решение избранных задач
    © 2024 Слинкин Д.А., GNU LGPLv3

 **********************************************************************}

{$mode objfpc}
// Алгоритм Дейкстры для поиска кратчайшего пути в графе
type
 PPoint=^TPoint;
 TPoint=record
    x,y:integer;
    pov:integer; // минимальное кол-во поворотов от начальной точки
 end;

var points:array of TPoint;

var
    count,i,k:integer;
    curpov:integer=0;
    isPov:boolean=true;
    label endpov;
begin
 read(count);
 inc(count,2);
 setLength(points,count);
 // нулевой элемент - точка старта
 // первый элемент - точка финиша
 readln(points[0].x, points[0].y, points[1].x, points[1].y);
 points[0].pov:=0;
 points[1].pov:=-1;
 for i:=2 to count-1 do begin
    readln(points[i].x, points[i].y);
    points[i].pov:=-1;
 end;

 while ispov do begin // пока что-то в массиве изменялось
    ispov:=false;
    for i:=0 to count-1 do begin
        if points[i].pov<>curPov then continue;
        // для текущей точки рассматриваем необработанные граничные с ней
        for k:=0 to count-1 do begin
            if points[k].pov>=0 then continue;
            if (points[k].x<>points[i].x) and (points[k].y<>points[i].y) then continue;
            // граничная необработанная найдена, инкрементируем в ней кол-во поворотов
            points[k].pov:=curPov+1;
            if k=1 then goto endpov; // граничная оказалась последней, завершаем обработку
            ispov:=true;
        end;
    end;
    inc(curPov);
 end;

endpov:
 if points[1].pov<0 then writeln(-1)
 else writeln(points[1].pov-1);

end.