uses math;
const fi='';
fo='';
maxn=300;
maxm=maxn*maxn;
oo=trunc(1e9);
type Tq =record
u1,u2,k :longint;
end;
var q :array[1..2*maxn*maxn*10] of Tq;
cx :array[1..maxn,1..maxn,1..2] of boolean;
f :array[1..maxn,1..maxn,1..2] of longint;
i,j,n,m,s,t :longint;
dau,cuoi,res :longint;
// danh sach
link,head,ke :array[1..maxm] of longint;
procedure enter;
var u,v :longint;
begin
assign(input,fi);reset(input);
readln(n,m,s,t);
for i:=1 to m do
begin
read(u,v);
link[i] := head[u];
head[u] :=i;
ke[i] := v;
end;
close(input);
end;
procedure push(x,y,z:longint);
begin
inc(cuoi);
q[cuoi].u1:=x;
q[cuoi].u2:=y;
q[cuoi].k:=z;
end;
procedure process;
var v1,v2,u1,u2,k :longint;
begin
dau :=1; cuoi :=0;
push(s,t,1);
fillchar(cx,sizeof(cx),true);
//
for i:=1 to n do
for j:=1 to n do
for k:=1 to 2 do
f[i,j,k] := oo;
f[s,t,1] := 0;
while dau<=cuoi do
begin
u1 := q[dau].u1;
u2 := q[dau].u2;
k := q[dau].k;
inc (dau);
if k=1 then
begin
i := head[u1];
while i>0 do
begin
v1 := ke[i];
if cx[v1,u2,2] then
begin
f[v1,u2,2] := min(f[v1,u2,2],f[u1,u2,1]+1);
push(v1,u2,2);
cx[v1,u2,2] := false;
end;
i:= link[i];
end;
end;
if k=2 then
begin
i := head[u2];
while i>0 do
begin
v2 := ke[i];
if cx[u1,v2,1] then
begin
f[u1,v2,1] := min(f[u1,u2,2]+1,f[u1,v2,1]);
push(u1,v2,1);
cx[u1,v2,1] := false;
end;
i:= link[i];
end;
end;
end;
res := oo;
for i:=1 to n do
res := min(res,f[i,i,1]);
end;
procedure print;
begin
assign(output,fo);rewrite(output);
if res=oo then write(-1) else write(res div 2);
close(output);
end;
begin
enter;
process;
print;
end.
dXNlcyAgICBtYXRoOwpjb25zdCAgIGZpPScnOwogICAgICAgIGZvPScnOwogICAgICAgIG1heG49MzAwOwogICAgICAgIG1heG09bWF4biptYXhuOwogICAgICAgIG9vPXRydW5jKDFlOSk7CnR5cGUgICAgVHEgICAgICA9cmVjb3JkCiAgICAgICAgICAgICAgICB1MSx1MixrIDpsb25naW50OwogICAgICAgICAgICAgICAgZW5kOwp2YXIgICAgIHEgICAgICAgOmFycmF5WzEuLjIqbWF4biptYXhuKjEwXSBvZiBUcTsKICAgICAgICBjeCAgICAgIDphcnJheVsxLi5tYXhuLDEuLm1heG4sMS4uMl0gb2YgYm9vbGVhbjsKICAgICAgICBmICAgICAgIDphcnJheVsxLi5tYXhuLDEuLm1heG4sMS4uMl0gb2YgbG9uZ2ludDsKICAgICAgICBpLGosbixtLHMsdCAgICAgOmxvbmdpbnQ7CiAgICAgICAgZGF1LGN1b2kscmVzICAgIDpsb25naW50OwogICAgICAgIC8vIGRhbmggc2FjaAogICAgICAgIGxpbmssaGVhZCxrZSAgICA6YXJyYXlbMS4ubWF4bV0gb2YgbG9uZ2ludDsKcHJvY2VkdXJlIGVudGVyOwp2YXIgICAgIHUsdiAgICAgOmxvbmdpbnQ7CmJlZ2luCiAgICAgICAgYXNzaWduKGlucHV0LGZpKTtyZXNldChpbnB1dCk7CiAgICAgICAgcmVhZGxuKG4sbSxzLHQpOwogICAgICAgIGZvciBpOj0xIHRvIG0gZG8KICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQodSx2KTsKICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tpXSA6PSBoZWFkW3VdOwogICAgICAgICAgICAgICAgICAgICAgICBoZWFkW3VdIDo9aTsKICAgICAgICAgICAgICAgICAgICAgICAga2VbaV0gOj0gdjsKICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICBjbG9zZShpbnB1dCk7CmVuZDsKcHJvY2VkdXJlIHB1c2goeCx5LHo6bG9uZ2ludCk7CmJlZ2luCiAgICAgICAgaW5jKGN1b2kpOwogICAgICAgIHFbY3VvaV0udTE6PXg7CiAgICAgICAgcVtjdW9pXS51Mjo9eTsKICAgICAgICBxW2N1b2ldLms6PXo7CmVuZDsKcHJvY2VkdXJlIHByb2Nlc3M7CnZhciAgICAgdjEsdjIsdTEsdTIsayA6bG9uZ2ludDsKYmVnaW4KICAgICAgICBkYXUgOj0xOyBjdW9pIDo9MDsKICAgICAgICBwdXNoKHMsdCwxKTsKICAgICAgICBmaWxsY2hhcihjeCxzaXplb2YoY3gpLHRydWUpOwogICAgICAgIC8vCiAgICAgICAgZm9yIGk6PTEgdG8gbiBkbwogICAgICAgICAgICAgICAgZm9yIGo6PTEgdG8gbiBkbwogICAgICAgICAgICAgICAgICAgICAgICBmb3Igazo9MSB0byAyIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZltpLGosa10gOj0gb287CiAgICAgICAgZltzLHQsMV0gOj0gMDsKICAgICAgICB3aGlsZSBkYXU8PWN1b2kgZG8KICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIHUxIDo9IHFbZGF1XS51MTsKICAgICAgICAgICAgICAgICAgICAgICAgdTIgOj0gcVtkYXVdLnUyOwogICAgICAgICAgICAgICAgICAgICAgICBrIDo9IHFbZGF1XS5rOwogICAgICAgICAgICAgICAgICAgICAgICBpbmMgKGRhdSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGs9MSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgOj0gaGVhZFt1MV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBpPjAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MSA6PSBrZVtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjeFt2MSx1MiwyXSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlt2MSx1MiwyXSA6PSBtaW4oZlt2MSx1MiwyXSxmW3UxLHUyLDFdKzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCh2MSx1MiwyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4W3YxLHUyLDJdIDo9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6PSBsaW5rW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICBpZiBrPTIgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpIDo9IGhlYWRbdTJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgaT4wIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjIgOj0ga2VbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3hbdTEsdjIsMV0gdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZbdTEsdjIsMV0gOj0gbWluKGZbdTEsdTIsMl0rMSxmW3UxLHYyLDFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2godTEsdjIsMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeFt1MSx2MiwxXSA6PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOj0gbGlua1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICByZXMgOj0gb287CiAgICAgICAgZm9yIGk6PTEgdG8gbiBkbwogICAgICAgICAgICAgICAgcmVzIDo9IG1pbihyZXMsZltpLGksMV0pOwplbmQ7CnByb2NlZHVyZSBwcmludDsKYmVnaW4KICAgICAgICBhc3NpZ24ob3V0cHV0LGZvKTtyZXdyaXRlKG91dHB1dCk7CiAgICAgICAgaWYgcmVzPW9vIHRoZW4gd3JpdGUoLTEpIGVsc2Ugd3JpdGUocmVzIGRpdiAyKTsKICAgICAgICBjbG9zZShvdXRwdXQpOwplbmQ7CmJlZ2luCiAgICAgICAgZW50ZXI7CiAgICAgICAgcHJvY2VzczsKICAgICAgICBwcmludDsKZW5kLg==