#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int INF = 1e9 + 7;
const int N = 2e5 + 7;
const int M = 5e6 + 7;
int dp[M], f[30], pre[M], prei[M];
signed main() {
  ios::sync_with_stdio(false);
  int n, m;
  scanf("%d", &n);
  scanf("%d", &m);
  for (int i = 1; i <= n; i++) f[i] = 1 << (i - 1);
  for (int i = 1, u, v; i <= m; i++) {
    scanf("%d", &u);
    scanf("%d", &v);
    f[u] |= (1 << (v - 1));
    f[v] |= (1 << (u - 1));
  }
  memset(dp, 0x7f, sizeof(dp));
  for (int i = 1; i < (1 << n); i++) {
    int k = i;
    for (int j = 1; j <= n; j++)
      if (i >> (j - 1) & 1) k &= f[j];
    if (k == i) dp[i] = 0, pre[i] = -1;
  }
  for (int i = 1; i < (1 << n); i++)
    for (int j = 1; j <= n; j++)
      if ((i >> (j - 1) & 1) && dp[i] + 1 < dp[i | f[j]]) {
        dp[i | f[j]] = dp[i] + 1;
        pre[i | f[j]] = i;
        prei[i | f[j]] = j;
      }
  printf("%d\n", dp[(1 << n) - 1]);
  for (int i = (1 << n) - 1; pre[i] != -1; i = pre[i]) printf("%d ", prei[i]);
  puts("");
  return 0;
}
