#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
const int N = 5000005;
int n, m, dp[N], f[25], pre[N], prei[N];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) f[i] = 1 << (i - 1);
  int u, v;
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d", &u, &v);
    f[u] |= (1 << (v - 1));
    f[v] |= (1 << (u - 1));
  }
  memset(dp, 0x3f3f3f3f, sizeof(dp));
  int tmp;
  for (int ca = 1; ca <= (1 << n) - 1; ++ca) {
    tmp = ca;
    for (int i = 1; i <= n; ++i)
      if (ca >> (i - 1) & 1) tmp &= f[i];
    if (tmp == ca) dp[ca] = 0, pre[ca] = -1;
  }
  for (int ca = 1; ca <= (1 << n) - 1; ++ca) {
    for (int i = 1; i <= n; ++i)
      if ((ca >> (i - 1)) & 1 && dp[ca] + 1 < dp[ca | f[i]]) {
        dp[ca | f[i]] = dp[ca] + 1;
        pre[ca | f[i]] = ca;
        prei[ca | f[i]] = i;
      }
  }
  printf("%d\n", dp[(1 << n) - 1]);
  for (int t = (1 << n) - 1; pre[t] != -1; t = pre[t]) printf("%d ", prei[t]);
  return 0;
}
