#include<bits/stdc++.h>
using namespace std;
int n,m,s,t,p[10006][10006],x,y,ans=1e5+100,l=0;
bool check(int s,int last[10006],int k){
last[s]=1;
int o=0;
if(s==t)l=1;
for(int i=1;i<=n;i++){
if(p[s][i]==1&&last[i]==0&&i!=k&&last[i]==0&&i!=s){
o++;
if(i==t) l=1;
else last[i]=1,check(i,last,k),last[i]=0;
}
}
if(!o||l) return 1;
else return 0;
}
void dfs(int now,int num,int last[10006]){
if(now==t){
if(ans==-1){ans=num;return;}
else {ans=min(ans,num);return;}
}
for(int i=1;i<=n;i++){
if(p[now][i]==1&&last[i]==0&&check(now,last,i)&&i!=now){
last[i]=1;
dfs(i,num+1,last);
last[i]=0;
}
l=0;
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
p[x][y]=1;
}
cin>>s>>t;
int lasta[10006];
lasta[s]=1;
dfs(s,0,lasta);
cout<<ans;
return 0;
}
纯dfs写的,7个点MLE,1个点WA