#include <bits/stdc++.h>
using namespace std;
int n, m;
int mark[22], dp[1 << 22], t1[1 << 22], t2[1 << 22];
void load() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    u--;
    v--;
    mark[u] |= 1 << v;
    mark[v] |= 1 << u;
  }
}
void process() {
  if (m == n * (n - 1) / 2) {
    puts("0");
    return;
  }
  for (int i = 0; i < 1 << n; ++i) dp[i] = 1e9;
  for (int i = 0; i < n; ++i) dp[1 << i] = 0;
  for (int x = 1; x < 1 << n; ++x) {
    for (int i = 0; i < n; ++i)
      if (x >> i & 1) {
        if (dp[x | mark[i]] > dp[x] + 1) {
          dp[x | mark[i]] = dp[x] + 1;
          t1[x | mark[i]] = x;
          t2[x | mark[i]] = i;
        }
      }
  }
  printf("%d\n", dp[(1 << n) - 1]);
  int u = (1 << n) - 1;
  while (dp[u]) {
    printf("%d ", t2[u] + 1);
    u = t1[u];
  }
  puts("");
}
int main() {
  load();
  process();
  return 0;
}
