#include <bits/stdc++.h>
int g[(1 << 22)][4], f[23], n, m, a, b;
void output(int v, int u) {
  if (u == 0) return;
  if (v == 0) return;
  output(g[v][1], u - 1);
  printf("%d ", g[v][2]);
}
int cnt(int v) {
  int ret = 0;
  for (; v; v >>= 1)
    if (v & 1) ret++;
  return ret;
}
int main(void) {
  memset(g, 127, sizeof(g));
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++)
    scanf("%d%d", &a, &b), f[a] |= 1 << (b - 1), f[b] |= 1 << (a - 1);
  for (int i = 1; i <= n; i++)
    f[i] |= 1 << (i - 1), g[f[i]][1] = 0, g[f[i]][2] = i, g[f[i]][3] = 0;
  for (int i = 1; i <= n; i++) g[f[i]][3]++;
  for (int i = 1; i <= n; i++)
    if (g[f[i]][3] == cnt(f[i]))
      g[f[i]][0] = 0;
    else
      g[f[i]][0] = 1;
  for (int i = 1; i <= (1 << n) - 1; i++)
    if (g[i][0])
      for (int j = 1; j <= n; j++)
        if ((i | (1 << (j - 1))) == i) {
          int gf = i | f[j];
          if (g[gf][0] > g[i][0] + 1)
            g[gf][0] = g[i][0] + 1, g[gf][1] = i, g[gf][2] = j;
        }
  printf("%d\n", g[(1 << n) - 1][0]);
  output((1 << n) - 1, g[(1 << n) - 1][0]);
  printf("\n");
  return 0;
}
