#include <bits/stdc++.h>
using namespace std;
const int maxN = 22, MOD = 1e9 + 7;
const long long INF = LLONG_MAX >> 1;
int dp[1 << maxN], au[1 << maxN], adj[maxN], n;
void prt(int m) {
  int ct = 0;
  for (int i = 0; i < n; i++)
    if (1 << i & m) ct++;
  cout << ct << '\n';
  while (m) cout << au[m] + 1 << ' ', m ^= 1 << au[m];
  cout << '\n';
}
void proc(int msk) {
  for (int i = 0; i < n; i++) {
    if (!(1 << i & msk) && (1 << i & dp[msk])) {
      dp[1 << i | msk] = dp[msk] | adj[i], au[1 << i | msk] = i;
      if (dp[1 << i | msk] + 1 == (1 << n)) prt(1 << i | msk), exit(0);
    }
  }
}
void combs(int sz, int be, int ms) {
  if (!sz) return proc(ms);
  for (int i = be; i < n; i++) combs(sz - 1, i + 1, ms | 1 << i);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  int m;
  cin >> n >> m;
  if (n * (n - 1) == m * 2 || n == 1) {
    cout << "0\n";
    return 0;
  }
  for (int i = 0, u, v; i < m; i++) {
    cin >> u >> v;
    u--, v--;
    adj[u] |= 1 << v, adj[v] |= 1 << u;
  }
  for (int i = 0; i < n; i++) {
    dp[1 << i] = adj[i] |= 1 << i, au[1 << i] = i;
    if (dp[1 << i] + 1 == (1 << n)) prt(1 << i), exit(0);
  }
  for (int i = 1; i < n; i++) combs(i, 0, 0);
}
