#include <bits/stdc++.h>
using namespace std;

int main(int argc, char const *argv[])
{
	int n,m;
	cin>>n>>m;
	set<int> edge[n];
	int u,v;
	for (int i = 0; i < m; ++i)
	{
		cin>>u>>v;--u;--v;
		edge[u].insert(v);
	}
	int s,t;
	cin>>s>>t;--s;--t;
	int memo[n][3];
	for (int i = 0; i < n; ++i)
	{
		memo[i][0]=-1;
		memo[i][1]=-1;
		memo[i][2]=-1;
	}
	memo[s][0]=0;
	queue<int> que;
	que.push(3*s);
	while(que.size()>0)
	{
		int now=que.front();
		que.pop();
		for (auto i = edge[now/3].begin(); i != edge[now/3].end(); ++i)
		{
			if (memo[*i][(now+1)%3]==-1)
			{
				memo[*i][(now+1)%3]=memo[now/3][now%3]+1;
				que.push((*i)*3+((now+1)%3));
			}
		}
	}
	if (memo[t][0]>0)
	{
		memo[t][0]/=3;
	}
	cout<<memo[t][0]<<endl;
	return 0;
}
