#include <bits/stdc++.h>
using namespace std;
int N, M;
int E[511][511];
int pre[511][511][2];
int dis[511][511][2];
int qux[1 << 19];
int quy[1 << 19];
int quf[1 << 19];
int p, q;
void enterqu(int x, int y, int f) {
  qux[q] = x, quy[q] = y, quf[q] = f;
  q++;
}
void outqu(int &x, int &y, int &f) {
  x = qux[p], y = quy[p], f = quf[p];
  p++;
}
int solve() {
  memset(pre, 0xff, sizeof pre);
  for (int i = (0); i < (511); i++)
    for (int j = (0); j < (511); j++)
      for (int k = (0); k < (2); k++) dis[i][j][k] = 1000000001;
  dis[0][N - 1][0] = 0;
  p = 0, q = 0;
  enterqu(0, N - 1, 0);
  while (p < q) {
    int x, y, f;
    outqu(x, y, f);
    if (f == 0) {
      for (int i = (1); i < (E[x][0] + 1); i++) {
        int nx = E[x][i], ny = y, nf = 1 - f;
        if (dis[nx][ny][nf] != 1000000001) continue;
        dis[nx][ny][nf] = dis[x][y][f];
        pre[nx][ny][nf] = x;
        enterqu(nx, ny, nf);
      }
    } else {
      for (int j = (1); j < (E[y][0] + 1); j++) {
        int nx = x, ny = E[y][j], nf = 1 - f;
        if (nx == ny) continue;
        if (dis[nx][ny][nf] != 1000000001) continue;
        dis[nx][ny][nf] = dis[x][y][f] + 1;
        pre[nx][ny][nf] = y;
        enterqu(nx, ny, nf);
        if (nx == N - 1 && ny == 0) return dis[nx][ny][nf];
      }
    }
  }
  return -1;
}
int main() {
  scanf("%d%d", &N, &M);
  for (int i = (0); i < (511); i++) E[i][0] = 0;
  for (int i = (0); i < (M); i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    u--, v--;
    E[u][++E[u][0]] = v;
    E[v][++E[v][0]] = u;
  }
  int ans = solve();
  if (ans == -1) {
    printf("-1\n");
    return 0;
  }
  printf("%d\n", ans);
  vector<pair<int, int> > vp;
  int x = N - 1, y = 0;
  do {
    vp.push_back(make_pair(x, y));
    y = pre[x][y][0];
    x = pre[x][y][1];
  } while (!(x == 0 && y == N - 1));
  vp.push_back(make_pair(x, y));
  for (int i = (0); i < (vp.size()); i++) printf("%d ", vp[i].second + 1);
  printf("\n");
  for (int i = (0); i < (vp.size()); i++) printf("%d ", vp[i].first + 1);
  printf("\n");
  return 0;
}
