#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,s,t,vis[200005],hv[200005],dis[200005];
vector<int>g[200005],FG[200005];
void _BFS(){
queue<int>q;
q.push(t);
vis[t]=1;
while(!q.empty()){
int x=q.front();
q.pop();
for(int v:FG[x]){
if(!vis[v]){
q.push(v);
vis[v]=1;
}
}
}
}
void _FIND(){
for(int i=1;i<=n;i++){
if(!vis[i])
continue;
for(auto v:g[i]){
if(!vis[v])
break;
hv[i]=1;
}
}
}
bool BFS_(){
queue<int>q;
q.push(s);
while(!q.empty()){
int x=q.front();
q.pop();
for(auto v:g[x]){
if(hv[v]){
q.push(v);
dis[v]=dis[x]+1;
if(v==t){
cout<<dis[t];
return 1;
}
}
}
}
return 0;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
FG[v].push_back(u);
}
cin>>s>>t;
_BFS();
_FIND();
if(!BFS_())
cout<<-1;
return 0;
}