#include <bits/stdc++.h>
using namespace std;
int s[25], ss[25];
int rcd[5000005];
int n, m, ans = 100, mstate;
int bitcnt(int x) {
  int ret = 0;
  while (x) {
    x -= (x & -x);
    ret++;
  }
  return ret;
}
void display(int s) {
  for (int i = 0; i < n; i++) {
    printf("%d", s & (1 << i) ? 1 : 0);
  }
  puts("");
}
bool check() {
  for (int i = 0; i < n; i++) {
    if ((s[i] | (1 << i)) != ((1 << n) - 1)) return false;
  }
  return true;
}
int dfs(int state, int fa) {
  if (rcd[state] != 0x3f3f3f3f) return rcd[state];
  if (state == (1 << n) - 1) return 0;
  if (ans <= bitcnt(state)) return 0;
  if (check()) {
    if (bitcnt(state) < ans) {
      ans = bitcnt(state);
      mstate = state;
    }
    return rcd[state] = 0;
  }
  for (int i = 0; i < n; i++) {
    if (!(state & (1 << i)) && (s[fa] & (1 << i))) {
      int t[25];
      for (int j = 0; j < n; j++) t[j] = s[j];
      for (int j = 0; j < n; j++) {
        for (int k = 0; k < n; k++) {
          if ((s[i] & (1 << j)) && (s[i] & (1 << k))) {
            s[j] |= (1 << k);
          }
        }
      }
      rcd[state] = min(rcd[state], 1 + dfs(state | (1 << i), i));
      for (int j = 0; j < n; j++) s[j] = t[j];
    }
  }
  return rcd[state];
}
int main() {
  memset(rcd, 0x3f, sizeof(rcd));
  cin >> n >> m;
  for (int i = 0, u, v; i < m; i++) {
    cin >> u >> v;
    s[u - 1] |= (1 << (v - 1));
    s[v - 1] |= (1 << (u - 1));
  }
  s[24] = (1 << n) - 1;
  cout << dfs(0, 24) << endl;
  for (int i = 0; i < n; i++) {
    if (mstate & (1 << i)) cout << i + 1 << ' ';
  }
  puts("");
  return 0;
}
