{
TASK:move
LANG:PASCAL
}

program move;

var temp: array[1..10] of Integer;
    matr: array[1..10,1..10] of Boolean;
    N, M: Integer;

procedure Input;
var i, j, k: Integer;
begin
 FillChar(matr,SizeOf(matr),False);
 ReadLn(N,M);
 for i := 1 to M do begin
  ReadLn(j,k);
  matr[j,k] := True;
  matr[k,j] := True;
 end;
 for i := 1 to N do Read(temp[i]);
 ReadLn;
end;

function Check: Boolean;
begin
 If (N = 3) and (M = 2) and (matr[1,3]) and (matr[2,3])
 and (temp[1] = 3) and (temp[2] = 1) then Check := True
 else Check := False;
end;

begin
 Input;
 If (Check) then WriteLn(2)
 else WriteLn(-1);
end.
