#include <bits/stdc++.h>
using namespace std;
int d[444][444];
int D1[444], D2[444];
int main(int argc, char *argv[]) {
  int N, M, u, v;
  scanf("%d%d", &N, &M);
  for (int i = 0; i < (M); i++) {
    scanf("%d%d", &u, &v);
    d[u - 1][v - 1] = d[v - 1][u - 1] = 1;
  }
  for (int i = 0; i < (N); i++) D1[i] = D2[i] = 444;
  D1[0] = D2[0] = 0;
  queue<int> q;
  q.push(0);
  while (!q.empty()) {
    int v = q.front();
    q.pop();
    for (int i = 0; i < (N); i++)
      if (d[v][i] == 0 && D1[i] > D1[v] + 1) {
        D1[i] = D1[v] + 1;
        q.push(i);
      }
  }
  q.push(0);
  while (!q.empty()) {
    int v = q.front();
    q.pop();
    for (int i = 0; i < (N); i++)
      if (d[v][i] == 1 && D2[i] > D2[v] + 1) {
        D2[i] = D2[v] + 1;
        q.push(i);
      }
  }
  int ans = max(D1[N - 1], D2[N - 1]);
  if (ans == 444) ans = -1;
  printf("%d\n", ans);
  return 0;
}
