#include <bits/stdc++.h>
using namespace std;
const int64_t N = 5e6 + 10;
int64_t n, m;
int64_t it[N];
bool hamband[N];
int64_t adj[N];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  if (m == (n - 1) * n >> 1) {
    cout << 0;
    return 0;
  }
  for (int64_t i = 0; i < m; i++) {
    int64_t x, y;
    cin >> x >> y;
    x--, y--;
    adj[x] += (1 << y);
    adj[y] += (1 << x);
  }
  hamband[0] = true;
  int64_t tow = 1;
  for (int64_t mask = 1; mask < (1 << n); mask++) {
    if (mask == tow) {
      hamband[mask] = true;
      tow <<= 1;
      continue;
    }
    for (int64_t now = mask; now;) {
      int64_t i = __builtin_ctz(now);
      if (hamband[mask ^ (1 << i)] && (adj[i] & mask)) {
        hamband[mask] = true;
        break;
      }
      now ^= (1 << i);
    }
  }
  int64_t ans = 0, Ans = 0;
  for (int64_t mask = 1; mask < (1 << n); mask++) {
    if (!hamband[mask]) {
      continue;
    }
    int64_t all = 0;
    for (int64_t now = mask; now; now ^= (1 << __builtin_ctz(now))) {
      all |= adj[__builtin_ctz(now)];
    }
    if ((all & ((1 << n) - 1 - mask)) == ((1 << n) - 1 - mask)) {
      if (ans < n - __builtin_popcount(mask)) {
        ans = n - __builtin_popcount(mask);
        Ans = mask;
      }
    }
  }
  cout << n - ans << '\n';
  for (int64_t i = 0; i < n; i++) {
    if (Ans & (1 << i)) {
      cout << i + 1 << ' ';
    }
  }
}
