#include #include #include #include #define rep(i, n) for(i = 0; i < n; i++) using namespace std; int n, m; vector et[200000]; int dist[200000]; int main() { int i; cin >> n >> m; rep(i, m) { int a, b; cin >> a >> b; a--; b--; et[a].push_back(b); et[b].push_back(a); } rep(i, n) dist[i] = -1; queue que; que.push(0); dist[0] = 0; while (!que.empty()) { int v = que.front(); que.pop(); rep(i, et[v].size()) { int nv = et[v][i]; if (dist[nv] == -1) { dist[nv] = dist[v] + 1; que.push(nv); } } } cout << dist[n - 1] << endl; return 0; }