#include<stdio.h>
#include<stdlib.h>
const int maxn=10010,maxm=200010;
int e,to[maxm],next[maxm],begin[maxn];
int e1,to1[maxm],next1[maxm],begin1[maxn];
int p[maxn],pd[maxn],px[maxn];
int q[maxn],d[maxn];
void add(int x,int y)
{
to[++e]=y;
next[e]=begin[x];
begin[x]=e;
}
void add1(int x,int y)
{
to1[++e1]=y;
next1[e1]=begin1[x];
begin1[x]=e1;
}
void dfs(int x){
int i;
px[x]=1;pd[x]=1;
for(i=begin1[x];i;i=next1[i])
if(!pd[to1[i]])
dfs(to1[i]);
return;
}
int main(){
int i,j,k,m,n,x,y,s,t;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
add(x,y);
add1(y,x);
}
scanf("%d%d",&s,&t);
dfs(t);
for(i=1;i<=n;i++)
if(begin[i]==0)
p[i]=1;
else
for(j=begin[i];j;j=next[j])
if(!px[to[j]]){
p[i]=1;
break;
}
p[t]=0;
for(i=1;i<=n;i++)pd[i]=0;
int f=0,l=1;
q[1]=s;pd[s]=1;
while(f<l){
f++;
for(i=begin[q[f]];i;i=next[i])
if(!pd[to[i]] && !p[to[i]]){
q[++l]=to[i];
d[l]=d[f]+1;
pd[to[i]]=1;
if(to[i]==t){
printf("%d\n",d[l]);
return 0;
}
}
}
printf("-1\n");
return 0;
}