#include #include #include using namespace std; int N,M,A,B; vectorG[1<<17]; int vis[1<<17]; main() { cin>>N>>M>>A>>B; for(int i=0;i<=N;i++)vis[i]=1e9; A--; for(;M--;) { int l,r;cin>>l>>r; l--; G[l].push_back(r); G[r].push_back(l); } queueP; for(int i=0;i<=A;i++) { P.push(i); vis[i]=0; } while(!P.empty()) { int u=P.front();P.pop(); for(int v:G[u])if(vis[v]>vis[u]+1) { vis[v]=vis[u]+1; P.push(v); } } int ans=1e9; for(int i=B;i<=N;i++)if(ans>vis[i])ans=vis[i]; cout<<(ans==(int)1e9?-1:ans)<