#include #include using namespace std; struct d{ int p,dist; }; int main(){ int n,m;cin>>n>>m; vector A[n]; for(int i = 0; m > i; i++){ int a,b;cin>>a>>b; a--;b--; A[a].push_back(b); A[b].push_back(a); } queue B; vector lck(n); B.push({0,0}); while(B.size()){ auto x = B.front();B.pop(); for(int i = 0; (int)A[x.p].size() > i; i++){ if(!lck[A[x.p][i]]){ lck[A[x.p][i]] = 1; if(A[x.p][i] == n-1){ cout << x.dist+1 << endl; return 0; } B.push({A[x.p][i],x.dist+1}); } } } cout << -1 << endl; }