#include <bits/stdc++.h>
using namespace std;
int n, m, adj[25], pode[1 << 23];
int main() {
  scanf("%d%d", &n, &m);
  if (m == n * (n - 1) / 2) {
    puts("0");
    return 0;
  }
  for (__typeof(n) i = (0) - ((0) > (n)); i != (n) - ((0) > (n));
       i += 1 - 2 * ((0) > (n)))
    adj[i] |= 1 << i, pode[1 << i] = 1;
  for (__typeof(m) i = (0) - ((0) > (m)); i != (m) - ((0) > (m));
       i += 1 - 2 * ((0) > (m))) {
    int u, v;
    scanf("%d%d", &u, &v);
    u--, v--;
    adj[u] |= 1 << v;
    adj[v] |= 1 << u;
  }
  int ans = (1 << n) - 1;
  for (__typeof((1 << n)) i = (1) - ((1) > ((1 << n)));
       i != ((1 << n)) - ((1) > ((1 << n))); i += 1 - 2 * ((1) > ((1 << n))))
    if (__builtin_popcount(i) < __builtin_popcount(ans) && pode[i]) {
      int cur = 0;
      for (__typeof(n) j = (0) - ((0) > (n)); j != (n) - ((0) > (n));
           j += 1 - 2 * ((0) > (n)))
        if (i & (1 << j)) cur |= adj[j];
      if (__builtin_popcount(cur) == n) ans = i;
      for (__typeof(n) j = (0) - ((0) > (n)); j != (n) - ((0) > (n));
           j += 1 - 2 * ((0) > (n)))
        if ((cur & (1 << j)) && !(i & (1 << j))) pode[i | (1 << j)] = 1;
    }
  printf("%d\n", __builtin_popcount(ans));
  for (__typeof(n) i = (0) - ((0) > (n)); i != (n) - ((0) > (n));
       i += 1 - 2 * ((0) > (n)))
    if (ans & (1 << i)) printf("%d ", i + 1);
  printf("\n");
}
