#include <bits/stdc++.h>
using namespace std;
int n, m, mx, f[25];
int ans[25], acnt = 1 << 30, cur[25], cnt, ct[1 << 22 | 5];
int lst[1 << 22 | 5];
queue<pair<int, int> > Q;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i < (1 << n); i++) ct[i] = ct[i >> 1] + (i & 1);
  for (int i = 1; i < (1 << n); i++) lst[i] = (i & 1) ? 1 : lst[i >> 1] + 1;
  for (int i = 1; i <= n; i++) f[i] = 1 << (i - 1);
  for (int i = 1, x, y; i <= m; i++)
    scanf("%d%d", &x, &y), f[x] |= 1 << y - 1, f[y] |= 1 << x - 1;
  int ans = 0;
  for (int i = 1; i <= n; i++)
    if (f[i] != (1 << n) - 1) ans = (1 << n) - 1;
  for (int s = 1; s < (1 << n); s++) {
    int S = 0;
    for (int i = 1; i <= n; i++)
      if (s >> (i - 1) & 1) S |= f[i];
    if (S != (1 << n) - 1) continue;
    int vis = 0, Q = s & -s;
    while (Q) {
      int c = lst[Q];
      vis |= 1 << c - 1;
      Q ^= 1 << c - 1;
      Q |= f[c] & s & ~vis;
    }
    if (vis == s && ct[ans] > ct[s]) ans = s;
  }
  printf("%d\n", ct[ans]);
  for (int i = 1; i <= n; i++)
    if (ans >> (i - 1) & 1) printf("%d ", i);
  return 0;
}
