#include using namespace std; typedef long long ll; typedef pair p_ll; template void debug(T itr1, T itr2) { auto now = itr1; while(now=0; i--) #define popcount __builtin_popcount const ll LLINF = pow(2,61)-1; const ll INF = pow(2,30)-1; ll gcd(ll a, ll b) { if (a> N >> M; ll a[M], b[M]; rep(i,M) { cin >> a[i] >> b[i]; a[i]--; b[i]--; } vector> adj(N); rep(i,M) { adj[a[i]].push_back(b[i]); adj[b[i]].push_back(a[i]); } vector d(N,-1); d[0] = 0; queue q; q.push(0); while (q.size()) { ll now = q.front(); q.pop(); for (auto x: adj[now]) { if (d[x]!=-1) continue; d[x] = d[now]+1; q.push(x); } } ll result = d[N-1]; cout << result << endl; return 0; }