uses crt;

var a:array[1..10000,1..10000] of 0..1;
        x,z:array[1..10000] of integer;
        n,m,i,max,nr:integer;




 procedure citire;
 var i,yy,y,j:integer; f:text;
 begin

  readln(n,m);

  for i:=1 to m do
         read(x[i]);

  for i:=1 to m do
         read(z[i]);

  for i:=1 to n-1 do
        begin
         readln(yy,y);
         a[yy,y]:=1;
         a[y,yy]:=1;
        end;

 end;



 function min (k,x,j:integer):integer;
 var i:integer;
 begin

  if k=x then begin min:=0; end
        else begin
                for i:=1 to n do
                        begin
                         if a[k,i]=1 then { la primul element din matrice
                                            de pe linia numarului actual (k)
                                            si i, se trece la urmatorul nod (i) }

                                begin           { writeln(k,' ',i,' '); }  {afisare drum}

                                 a[k,i]:=0; a[i,k]:=0;

                                 min:=min(i,x,j+1)+1;

                                 a[k,i]:=1; a[i,k]:=1;

                                end;
                        end;
                end;
 end;



begin

 citire;  max:=0; nr:=0;

 for i:=1 to m do
        begin
         nr:=min(x[i],z[i],0);
         if nr<max then max:=nr;
        end;

 writeln(max);

end.