#include <bits/stdc++.h>
using namespace std;
const int N = 23;
const int mod = 1e9 + 7;
int n, m;
int bs[N];
vector<int> ans, res;
int change[N][N];
void upd() {
  if (res.size() < ans.size() || ans.empty()) ans = res;
}
void dfs(int i) {
  if (bs[i] == (1 << n) - 1 - (1 << i)) {
    res.push_back(i + 1);
    upd();
    res.pop_back();
    return;
  }
  if (i >= n) return;
  dfs(i + 1);
  int t = bs[i];
  t += 1 << i;
  int head = 0, tail = 0;
  {
    int tmp = t;
    while (tmp) {
      int pos = __builtin_ctz(tmp);
      change[i][tail++] = bs[pos];
      bs[pos] |= t - (1 << pos);
      tmp -= tmp & -tmp;
    }
  }
  res.push_back(i + 1);
  dfs(i + 1);
  {
    int tmp = t;
    while (tmp) {
      int pos = __builtin_ctz(tmp);
      bs[pos] = change[i][head++];
      tmp -= tmp & -tmp;
    }
  }
  res.pop_back();
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    bs[u] += 1 << v;
    bs[v] += 1 << u;
  }
  int f = 1;
  for (int i = 0; i <= n - 1; i++)
    if (bs[i] != (1 << n) - 1 - (1 << i)) {
      f = 0;
      break;
    }
  if (f || n == 1) {
    cout << 0 << endl;
    return 0;
  }
  dfs(0);
  cout << ans.size() << endl;
  cout << ans[0];
  for (int i = 1; i <= ans.size() - 1; i++) cout << ' ' << ans[i];
}
