#include using namespace std; using ll=long long; #include using namespace atcoder; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N,M,S,T; cin>>N>>M>>S>>T; S--;T--; vector> G(N); vector C(N,0); set> EF; for(int i=0;i>u>>v; u--;v--; if(u>v)swap(u,v); G[u].push_back(v); G[v].push_back(u); EF.insert({u,v}); C[u]++; C[v]++; } queue Q; for(int i=0;i> D(N,{INF,INF}); D[S]={0,0}; priority_queue,vector>,greater>> que; que.push({0,0,S}); vector seen(N,0); while(!que.empty()){ auto [c,d,n]=que.top(); que.pop(); if(seen[n])continue; seen[n]=1; for(auto v:G[n]){ int nc=c+1; int nd=d-(EF.count({min(n,v),max(n,v)})); if(seen[v])continue; array ND={nc,nd}; // cout<1e7)cout<<-1<<"\n"; else cout<<-D[T][1]<<"\n"; }