#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10, MN = 33;
int n, m, adj[MN], dom[(1 << 22) + 10];
int q[(1 << 22) + 10], L, R;
bool mk[(1 << 22) + 10];
int main() {
  ios_base ::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  if (m == n * (n - 1) / 2) return cout << "0\n", 0;
  for (int i = 0; i < m; ++i) {
    int x, y;
    cin >> x >> y;
    --x, --y;
    adj[x] |= 1 << y, adj[y] |= 1 << x;
  }
  for (int i = 0; i < n; ++i) adj[i] |= 1 << i;
  for (int i = 0; i < n; ++i) {
    q[R++] = 1 << i;
    mk[1 << i] = true;
  }
  while (L < R) {
    int v = q[L++];
    for (int i = 0; i < n; ++i)
      if (!(v & 1 << i) && (adj[i] & v)) {
        if (!mk[v | (1 << i)]) {
          mk[v | (1 << i)] = true;
          q[R++] = v | (1 << i);
        }
      }
  }
  int ans = n, tg = (1 << n) - 1;
  for (int msk = 1; msk < (1 << n) - 1; msk++) {
    dom[msk] = dom[msk ^ (1 << __builtin_ctz(msk))] | adj[__builtin_ctz(msk)];
    if (dom[msk] == (1 << n) - 1 && mk[msk]) {
      int val = __builtin_popcount(msk);
      if (ans > val) {
        ans = val;
        tg = msk;
      }
    }
  }
  cout << ans << '\n';
  for (int i = 0; i < n; ++i)
    if (tg & 1 << i) cout << i + 1 << ' ';
  cout << '\n';
  return 0;
}
