#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 50;
int power(int b, int exp) {
  int res = 1;
  while (exp > 0) {
    if (exp % 2) {
      res = 1LL * res * b % mod;
    }
    b = 1LL * b * b % mod;
    exp /= 2;
  }
  return res;
}
vector<int> adj[N], res;
int n, m;
vector<int> mask;
void fun(int node, int tot, vector<int>& used) {
  if (tot == n) {
    if (res.size() > used.size()) {
      res = used;
    }
    return;
  }
  if (node == n) {
    return;
  }
  if (used.size() >= res.size()) {
    return;
  }
  used.push_back(node);
  int new_tot = tot;
  vector<int> old_mask;
  old_mask = mask;
  for (int i = 0; i < n; i++) {
    if (old_mask[node] & (1 << i)) {
      mask[i] |= old_mask[node];
    }
    if (old_mask[i] != mask[i] && mask[i] == (1 << n) - 1) {
      new_tot++;
    }
  }
  fun(node + 1, new_tot, used);
  used.pop_back();
  mask = old_mask;
  fun(node + 1, tot, used);
}
int main() {
  scanf("%d %d", &n, &m);
  mask.resize(n, 0);
  for (int i = 0; i < n; i++) {
    res.push_back(i);
    mask[i] |= (1 << i);
  }
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    u--;
    v--;
    mask[u] |= (1 << v);
    mask[v] |= (1 << u);
  }
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    cnt += (mask[i] == ((1 << n) - 1));
  }
  vector<int> used;
  fun(0, cnt, used);
  printf("%d\n", res.size());
  for (int node : res) {
    printf("%d ", node + 1);
  }
  printf("\n");
  return 0;
}
