#include <iostream>
#include <vector>
#include <queue>
#define INF 99999999
#define MAX_V 1001
#define MAX_E 10001
using namespace std;
int a, b, N, M;
vector<pair<int, int>> adj[MAX_E];
vector<int> dijkstra (int Value, int src)
{
vector<int> dist(Value+1, INF);
dist[src] = 0;
priority_queue<pair<int, int>> pq;
pq.push(make_pair(0, src));
while (!pq.empty())
{
int cost = -pq.top().first;
int here = pq.top().second;
pq.pop();
if (dist[here] < cost) continue;
for (int i = 0; i < adj[here].size(); ++i)
{
int there = adj[here][i].first;
int nextDist = cost + adj[here][i].second;
if (dist[there] > nextDist)
{
dist[there] = nextDist;
pq.push(make_pair(-nextDist, there));
}
}
}
return dist;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> a >> b;
cin >> N >> M;
for (int i = 0; i < M; ++i)
{
int u, v;
cin >> u >> v;
adj[u].push_back(make_pair(v, 1));
adj[v].push_back(make_pair(u, 1));
}
vector<int> result = dijkstra(N, a);
if (result[b] == INF)
cout << -1;
else
cout << result[b];
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNkZWZpbmUgSU5GIDk5OTk5OTk5CiNkZWZpbmUgTUFYX1YgMTAwMQojZGVmaW5lIE1BWF9FIDEwMDAxCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgYSwgYiwgTiwgTTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhZGpbTUFYX0VdOwp2ZWN0b3I8aW50PiBkaWprc3RyYSAoaW50IFZhbHVlLCBpbnQgc3JjKQp7Cgl2ZWN0b3I8aW50PiBkaXN0KFZhbHVlKzEsIElORik7CglkaXN0W3NyY10gPSAwOwoJcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsIGludD4+IHBxOwoJcHEucHVzaChtYWtlX3BhaXIoMCwgc3JjKSk7Cgl3aGlsZSAoIXBxLmVtcHR5KCkpCgl7CgkJaW50IGNvc3QgPSAtcHEudG9wKCkuZmlyc3Q7CgkJaW50IGhlcmUgPSBwcS50b3AoKS5zZWNvbmQ7CgkJcHEucG9wKCk7CgkJCgkJaWYgKGRpc3RbaGVyZV0gPCBjb3N0KQljb250aW51ZTsKCQkKCQlmb3IgKGludCBpID0gMDsgaSA8IGFkaltoZXJlXS5zaXplKCk7ICsraSkKCQl7CgkJCWludCB0aGVyZSA9IGFkaltoZXJlXVtpXS5maXJzdDsKCQkJaW50IG5leHREaXN0ID0gY29zdCArIGFkaltoZXJlXVtpXS5zZWNvbmQ7CgkJCWlmIChkaXN0W3RoZXJlXSA+IG5leHREaXN0KQoJCQl7CgkJCQlkaXN0W3RoZXJlXSA9IG5leHREaXN0OwoJCQkJcHEucHVzaChtYWtlX3BhaXIoLW5leHREaXN0LCB0aGVyZSkpOwoJCQl9CgkJfQoJfQoJcmV0dXJuIGRpc3Q7Cn0KaW50IG1haW4oKQp7ICAgCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgCiAgICBjaW4gPj4gYSA+PiBiOwogICAgY2luID4+IE4gPj4gTTsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNOyArK2kpCiAgICB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKG1ha2VfcGFpcih2LCAxKSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayhtYWtlX3BhaXIodSwgMSkpOwogICAgfQogICAgCiAgICB2ZWN0b3I8aW50PiByZXN1bHQgPSBkaWprc3RyYShOLCBhKTsKICAgIAogICAgaWYgKHJlc3VsdFtiXSA9PSBJTkYpCiAgICAgICAgY291dCA8PCAtMTsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8IHJlc3VsdFtiXTsKCiAgICByZXR1cm4gMDsKfQ==