#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using ll=long long; typedef pair P; int main() { int n, m, a, b; cin>>n>>m>>a>>b; a--; int l[100010], r[100010]; vector g[100010]; for(int i=0; i>l[i]>>r[i]; l[i]--; g[l[i]].push_back(r[i]); g[r[i]].push_back(l[i]); } int d[100010]; const int INF=1e9; fill(d, d+n+1, INF); queue que; for(int i=0; i<=a; i++){ que.push(i); d[i]=0; } while(!que.empty()){ int x=que.front(); que.pop(); for(auto y:g[x]){ if(d[y]>d[x]+1){ d[y]=d[x]+1; que.push(y); } } } int mn=INF; for(int i=b; i<=n; i++){ mn=min(mn, d[i]); } if(mn==INF) cout<<-1<