#include <bits/stdc++.h>
const int mod = 1e9 + 7;
const int maxn = 23;
const double EPS = 1e-6;
using namespace std;
int n, m;
int e[maxn];
int dp[1 << maxn], pres[1 << maxn] = {0}, preid[1 << maxn];
void init() {
  memset(dp, 0x3f3f3f3f, sizeof(dp));
  for (int i = 1; i < (n + 1); ++i) {
    e[i] = (1 << (i - 1));
  }
}
int main() {
  scanf("%d%d", &n, &m);
  init();
  int u, v;
  for (int i = 0; i < (m); ++i) {
    scanf("%d%d", &u, &v);
    e[u] |= (1 << (v - 1));
    e[v] |= (1 << (u - 1));
  }
  if (2 * m == n * (n - 1)) return puts("0"), 0;
  dp[0] = 0;
  for (int s = 0; s < ((1 << n)); ++s) {
    if (dp[s] == 0x3f3f3f3f) continue;
    for (int i = 1; i < (n + 1); ++i) {
      if (s & (1 << (i - 1)) || s == 0) {
        if (dp[s | e[i]] > dp[s] + 1) {
          dp[s | e[i]] = dp[s] + 1;
          pres[s | e[i]] = s;
          preid[s | e[i]] = i;
        }
      }
    }
  }
  printf("%d\n", dp[(1 << n) - 1]);
  int t = (1 << n) - 1;
  while (t) {
    printf("%d ", preid[t]);
    t = pres[t];
  }
  return 0;
}
