#include <bits/stdc++.h>
using namespace std;
int edge[55], pw[55];
int q[55];
int main() {
  int n, m;
  cin >> n >> m;
  if (m == n * (n - 1) / 2) return puts("0"), 0;
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    edge[u] |= 1 << v;
    edge[v] |= 1 << u;
  }
  for (int i = 0; i < n; i++) edge[i] |= (pw[i] = 1 << i);
  pw[n] = 1 << n;
  int ans = n;
  vector<int> tmp;
  for (int b = (1 << n) - 1; b >= 0; b--) {
    int crr = __builtin_popcount(b);
    if (crr > ans) continue;
    int f = 0, g, h = 0;
    for (int i = 0; i < n; i++)
      if (b & pw[i]) f |= edge[i], g = i, h |= pw[i];
    if (f != pw[n] - 1) continue;
    int qb = 0, qf = 0;
    q[qb++] = g;
    h ^= pw[g];
    for (int u, v; qf < qb;) {
      u = q[qf++];
      for (int a = edge[u] & h; a;) {
        v = 31 - __builtin_clz(a);
        h ^= pw[v];
        a ^= pw[v];
        q[qb++] = v;
      }
    }
    if (qb == crr) {
      ans = crr;
      tmp.resize(qb);
      for (int i = 0; i < qb; i++) tmp[i] = q[i];
    }
  }
  cout << ans << endl;
  for (auto r : tmp) cout << r + 1 << ' ';
  cout << endl;
  return 0;
}
