#include <bits/stdc++.h>
using namespace std;
constexpr int N = 23;
int n, m, u, v, adj[N], hamsaye[1 << N], ans = N, ans2;
bool connected[1 << N];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  if (2 * m == n * (n - 1)) {
    cout << 0 << '\n';
    return 0;
  }
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    u--, v--;
    adj[u] ^= 1 << v;
    adj[v] ^= 1 << u;
  }
  for (int i = 0; i < n; i++) adj[i] ^= (1 << i);
  connected[0] = true;
  for (int mask = 1; mask < (1 << n); mask++) {
    if (__builtin_popcount(mask) == 1) {
      connected[mask] = true;
      continue;
    }
    for (int i = 0; i < n; i++) {
      if ((adj[i] & (mask ^ (1 << i))) && connected[mask ^ (1 << i)])
        connected[mask] = true;
    }
  }
  for (int mask = 1; mask < (1 << n); mask++) {
    hamsaye[mask] =
        adj[__builtin_ctz(mask)] | hamsaye[mask ^ (1 << __builtin_ctz(mask))];
    if (connected[mask] && __builtin_popcount(hamsaye[mask]) == n) {
      if (__builtin_popcount(mask) < ans) {
        ans = __builtin_popcount(mask);
        ans2 = mask;
      }
    }
  }
  cout << ans << '\n';
  for (int i = 0; i < n; i++)
    if (ans2 & (1 << i)) cout << i + 1 << ' ';
  cout << '\n';
  return 0;
}
