#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int a,b;
bool flag[1005];
int vis[1005];
vector<vector<int>> maap;
void dfs(int x){
if(x == b){
ans++;
for(int i = 0;i < n;i++){
if(flag[i] == true){
vis[i]++;
}
}
return;
}
for(int i = 0;i < maap[x].size();i++){
if(flag[maap[x][i]] == false){
flag[maap[x][i]] = true;
dfs(maap[x][i]);
flag[maap[x][i]] = false;
}
}
}
int main() {
cin>>n>>m;
maap.resize(n+2);
memset(vis, 0, sizeof(vis));
for(int i = 0;i < m;i++){
int x,y;
cin >> x >> y;
maap[x].push_back(y);
maap[y].push_back(x);
}
cin >> a >> b;
dfs(a);
if(ans == 0){
cout << "-1" << endl;
return 0;
}
int res = 0;
for(int i = 0;i < n;i++){
if(vis[i] == ans){
res++;
}
}
cout << res-1 << endl;
return 0;
}