#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
bool debug = 1;
const int N = 25, NN = (1 << 22) + 10;
bool isc[NN];
int g[N];
long long n, m;
int main() {
  cin >> n >> m;
  if (m == (n * (n - 1)) / 2) {
    cout << 0 << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    g[i] |= (1 << i);
    isc[(1 << i)] = 1;
  }
  for (int i = 0; i < m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    u--, v--;
    g[u] |= (1 << v);
    g[v] |= (1 << u);
  }
  for (int mask = 1; mask <= (1 << n) - 1; mask++) {
    if (isc[mask]) {
      int cur = mask;
      for (int i = 0; i < n; i++) {
        if (mask & (1 << i)) {
          cur |= g[i];
        }
      }
      for (int i = 0; i < n; i++) {
        if (cur & (1 << i)) {
          isc[mask | (1 << i)] = 1;
        }
      }
    }
  }
  long long mink = LLONG_MAX;
  int maskans;
  for (int mask = 1; mask <= (1 << n) - 1; mask++) {
    if (!isc[mask]) continue;
    int cur = mask;
    long long ck = 0;
    for (int i = 0; i < n; i++) {
      if (mask & (1 << i)) {
        cur |= g[i];
        ck++;
      }
    }
    if (cur == (1 << n) - 1 and ck < mink) mink = ck, maskans = mask;
  }
  cout << mink << endl;
  for (int i = 0; i < n; i++) {
    if (maskans & (1 << i)) {
      cout << i + 1 << " ";
    }
  }
  cout << endl;
  return 0;
}
