#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const long long inf = 3e18 + 5;
int add(int a, int b) { return (a += b) < mod ? a : a - mod; }
int mul(int a, int b) { return 1LL * a * b % mod; }
const int maxn = 23;
int dp[1 << maxn], msk[1 << maxn], n, nxt[1 << maxn];
int f(int mask) {
  if (dp[mask] != -1) {
    return dp[mask];
  }
  if (mask == (1 << n) - 1) {
    return 0;
  }
  int idi = 0;
  int ret = mod;
  for (int i = 0; i < n; i++) {
    if (mask & (1 << i)) {
      if ((mask | msk[i]) == mask) {
        continue;
      }
      if (1 + f(mask | msk[i]) < ret) {
        idi = i;
        ret = 1 + f(mask | msk[i]);
      }
    }
  }
  nxt[mask] = idi;
  return dp[mask] = ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int m;
  cin >> n >> m;
  if (m == n * (n - 1) / 2) return cout << 0, 0;
  for (int i = 0; i < n; i++) {
    msk[i] |= (1 << i);
  }
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    u--, v--;
    msk[u] |= (1 << v);
    msk[v] |= (1 << u);
  }
  memset(dp, -1, sizeof dp);
  int res = mod, x = 0;
  for (int i = 0; i < n; i++) {
    if (1 + f(msk[i]) < res) {
      x = i;
      res = 1 + f(msk[i]);
    }
  }
  int maska = 0;
  cout << res << "\n";
  while (maska != (1 << n) - 1) {
    cout << x + 1 << " ";
    maska |= msk[x];
    x = nxt[maska];
  }
}
