#include<bits/stdc++.h>
using namespace std;
typedef long long  ll;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
#define INF 1e12


int main()
{
	ll v,x,y,e,a,b,in=0;
	pll h;
	cin>>v>>e;
	vector<vl > grafo(v,vl(0));
	for(int i=0;i<e;i++)
    {
        cin>>x>>y;
        grafo[x-1].push_back(y-1);
    }
    cin>>a>>b;a--;b--;


    ll p=0,inicio=a;
	vector<vector<bool> > visitado(v,vector<bool>(4,false));
	vector<vector<ll> > dist(v,vector<ll>(4,INF));
    dist[inicio][p]=0;
    if(!visitado[inicio][p]){
    queue<pll> q;
    q.emplace(inicio,p);
    while(!q.empty()){

		    ll t=q.front().first,pos=q.front().second;
		    q.pop();
		    if(!visitado[t][pos%3]){

		        visitado[t][pos%3]=true;
		        for(ll i=0;i<grafo[t].size();i++){

		            if(!visitado[grafo[t][i]][(pos+1)%3])
					{
					    dist[grafo[t][i]][(pos+1)%3]=dist[t][pos%3]+1;
						q.emplace(grafo[t][i],(pos+1)%3);
					}
		        }
		    }
		}
		//u.

		}
    if(dist[b][0]!=INF)cout<<dist[b][0]/3<<"\n";
    else cout<<"-1\n";
	return 0;
}
