#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ull;
typedef long long ll;

#define MAX 100000
#define INF -1

int n;
vector<int> g[4*MAX];
int d[4*MAX];

void bfs(int s){
	queue<int> q;
	fill(d, d+4*MAX, INF);
	q.push(s);
	d[s]=0;

	while(!q.empty()){
		int u=q.front();
		q.pop();
		for(int i=0; i<g[u].size(); i++){
			if(d[g[u][i]]==INF){
				q.push(g[u][i]);
				d[g[u][i]]=d[u]+1;
			}
		}
	}
	return;
}

int main(){
	int m;
	cin >> n >> m;
	for(int i=0; i<m; i++){
		int u, v;
		cin >> u >> v;
		u--; v--;
		for(int j=0; j<3; j++){
			g[j*MAX+u].push_back(((j+1)%3)*MAX+v);
		}
	}

	int s, t;
	cin >> s >> t;
	s--; t--;

	bfs(s);
	if(d[t]!=INF && d[t]%3==0) cout << d[t]/3 << endl;
	else cout << -1 << endl;
	return 0;
}