// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
int n, m, s, t;
vector<int> G[200050];
int dist[200050];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m >> s >> t;
while(m--) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
for(int i = 1; i <= n; i++) dist[i] = 1000000000;
dist[s] = 0;
queue<int> q; // lưu xem là những đỉnh nào sẽ cần đi cập nhật
q.push(s);
while(!q.empty()) {
int u = q.front(); q.pop(); // lấy ra đỉnh ở đầu hàng đợi (đây chính là đỉnh có khoảng cách tới s nhỏ nhất hiện tại)
for(int v : G[u]) if (dist[v] > dist[u] + 1) {
dist[v] = dist[u] + 1; // s->v khi đi qua đỉnh u và cạnh (u, v) sẽ tối ưu hơn
q.push(v);
}
}
if (dist[t] == 1000000000) // t chưa được thăm
cout << -1;
else
cout << dist[t];
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG4sIG0sIHMsIHQ7CnZlY3RvcjxpbnQ+IEdbMjAwMDUwXTsKaW50IGRpc3RbMjAwMDUwXTsKCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgY2luID4+IG4gPj4gbSA+PiBzID4+IHQ7CiAgICB3aGlsZShtLS0pIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIEdbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIEdbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGRpc3RbaV0gPSAxMDAwMDAwMDAwOwogICAgZGlzdFtzXSA9IDA7CiAgICBxdWV1ZTxpbnQ+IHE7IC8vIGzGsHUgeGVtIGzDoCBuaOG7r25nIMSR4buJbmggbsOgbyBz4bq9IGPhuqduIMSRaSBj4bqtcCBuaOG6rXQKICAgIHEucHVzaChzKTsKICAgIHdoaWxlKCFxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsgLy8gbOG6pXkgcmEgxJHhu4luaCDhu58gxJHhuqd1IGjDoG5nIMSR4bujaSAoxJHDonkgY2jDrW5oIGzDoCDEkeG7iW5oIGPDsyBraG/huqNuZyBjw6FjaCB04bubaSBzIG5o4buPIG5o4bqldCBoaeG7h24gdOG6oWkpCiAgICAgICAgZm9yKGludCB2IDogR1t1XSkgaWYgKGRpc3Rbdl0gPiBkaXN0W3VdICsgMSkgewogICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIDE7IC8vIHMtPnYga2hpIMSRaSBxdWEgxJHhu4luaCB1IHbDoCBj4bqhbmggKHUsIHYpIHPhur0gdOG7kWkgxrB1IGjGoW4KICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgIH0KICAgIH0KICAgIGlmIChkaXN0W3RdID09IDEwMDAwMDAwMDApIC8vIHQgY2jGsGEgxJHGsOG7o2MgdGjEg20KICAgICAgICBjb3V0IDw8IC0xOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgZGlzdFt0XTsKICAgIHJldHVybiAwOwp9Cg==