#include<bits/stdc++.h>
using namespace std;
int n,m,s,t,dis[10005];
bool vis[10005];
vector<int> v[10005],vv[10005];
queue<int> q;
void bfs1(int x){
q.push(x);
vis[x]=1;
while(!q.empty()){
int tmp=q.front();
q.pop();
for(int i=0;i<v[tmp].size();i++){
int y=v[tmp][i];
if(!vis[y]){
vis[y]=1;
q.push(y);
}
}
}
}
bool check(int x){
for(int i=0;i<v[x].size();i++){
if(!vis[v[x][i]]){
return false;
}
}
return true;
}
bool bfs2(int x){
q.push(x);
while(!q.empty()){
int tmp=q.front();
q.pop();
if(check(tmp)){
for(int i=0;i<vv[tmp].size();i++){
int y=vv[tmp][i];
if(dis[y]==-1){
dis[y]=dis[tmp]+1;
q.push(y);
if(y==t){
cout<<dis[t]+1;
exit(0);
}
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
v[b].push_back(a);
vv[a].push_back(b);
}
cin>>s>>t;
bfs1(t);
memset(dis,-1,sizeof(dis));
dis[s]=0;
bfs2(s);
cout<<-1;
return 0;
}