#include using namespace std; int main(){ int N,M; cin >> N >> M; vector> G(N); for(int i=0;i> a >> b; a--; b--; G[a].push_back(b); G[b].push_back(a); } int INF = 1000000000; vector dist(N,INF); dist[0] = 0; queue que; que.push(0); while(!que.empty()){ int v = que.front(); que.pop(); for(auto nv:G[v]){ if(dist[nv] == INF){ dist[nv] = dist[v]+1; que.push(nv); } } } int ans = dist[N-1]; if(ans == INF) ans = -1; cout << ans << endl; }