#include <bits/stdc++.h>
using namespace std;
int A[22];
int dp[1 << 22];
int bp[1 << 22];
int nl;
int f(int m) {
  if (m == nl) return 0;
  if (dp[m] > -1) return dp[m];
  int mx = 1e9;
  for (int i = m; i; i -= i & (-i))
    if (m != (m | A[__builtin_ctz(i)]))
      if (mx > f(m | A[__builtin_ctz(i)])) {
        bp[m] = __builtin_ctz(i);
        mx = f(m | A[__builtin_ctz(i)]);
      }
  return dp[m] = 1 + mx;
}
int main() {
  memset(dp, -1, sizeof dp);
  int n, m;
  cin >> n >> m;
  if (n * (n - 1) / 2 == m) return cout << 0, 0;
  nl = (1 << n) - 1;
  int u, v;
  while (m--) {
    cin >> u >> v;
    u -= 1;
    v -= 1;
    A[u] |= 1 << v;
    A[v] |= 1 << u;
  }
  int mx = 1e9;
  int rx = 0;
  for (int i = 0; i < n; ++i)
    if (mx > f(1 << i)) {
      rx = i;
      mx = f(1 << i);
    }
  int dx = 1 << rx;
  cout << mx << '\n';
  for (int i = 0; i < mx; ++i) {
    cout << rx + 1 << ' ';
    dx |= A[rx];
    rx = bp[dx];
  }
  return 0;
}
