#include <bits/stdc++.h>
using namespace std;
int f[(1 << 22)], p[(1 << 22)], q[(1 << 22)], a[24][24], l[24];
int n, u, v, m;
int main() {
  int t;
  memset(f, 0x7f, sizeof(f));
  scanf("%d%d\n", &n, &m);
  if (n == 1) {
    printf("0");
    return 0;
  }
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d\n", &u, &v);
    a[u][v] = a[v][u] = 1;
    f[(1 << ((u)-1)) | (1 << ((v)-1))] = 0;
  }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j)
      if (a[i][j]) l[i] |= (1 << ((j)-1));
  for (int s = 0; s < (1 << n); ++s) {
    if (f[s] > ((int)1e+9)) continue;
    for (int i = 1; i <= n; ++i)
      if ((s >> (i - 1)) & 1) {
        t = l[i];
        if (f[s | t] > f[s] + 1) {
          f[s | t] = f[s] + 1;
          p[s | t] = s, q[s | t] = i;
        }
      }
    for (int i = 1; i <= n; ++i) {
      if ((s >> (i - 1)) & 1) continue;
      if (((((1 << n) - 1) - l[i]) & s) == 0)
        f[s | (1 << ((i)-1))] = 0,
                    p[s | (1 << ((i)-1))] = q[s | (1 << ((i)-1))] = 0;
    }
  }
  t = 0;
  for (int j = 1; j <= n; ++j) t |= (1 << ((j)-1));
  printf("%d\n", f[t]);
  while (q[t]) {
    printf("%d ", q[t]);
    t = p[t];
  }
  return 0;
}
