#include <bits/stdc++.h>
using namespace std;
int n, m, u, v, a[22];
vector<int> vec, K;
void dfs(int depth, vector<int> res) {
  if (depth == n) {
    for (int i = 0; i < res.size(); i++) {
      if (res[i] != (1 << n) - 1) return;
    }
    if (vec.size() > K.size()) vec = K;
    return;
  }
  dfs(depth + 1, res);
  for (int i = 0; i < n; i++) {
    if ((res[depth] & (1 << i)) != 0) res[i] |= res[depth];
  }
  K.push_back(depth);
  dfs(depth + 1, res);
  K.pop_back();
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) a[i] += (1 << i);
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    u--;
    v--;
    a[u] += (1 << v);
    a[v] += (1 << u);
  }
  for (int i = 0; i < n; i++) vec.push_back(i);
  vector<int> ret;
  for (int i = 0; i < n; i++) ret.push_back(a[i]);
  dfs(0, ret);
  cout << vec.size() << endl;
  for (int i = 0; i < vec.size(); i++) {
    if (i) cout << " ";
    cout << vec[i] + 1;
  }
  cout << endl;
  return 0;
}
