#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 ",d[l]); return 0; } } } printf("-1 "); return 0; }