#include <bits/stdc++.h>
using namespace std;
int ans, rem, acc[23], fa[23], n, f[23][23];
int getfa(int x) { return x == fa[x] ? x : fa[x] = getfa(fa[x]); }
void DFS(int x, int S, int m) {
  if (m >= ans) return;
  if (x == n) {
    bool suc = 1;
    int root = -1;
    for (int i = 0; i <= n - 1; i++) {
      if (S & (1 << i)) {
        if (root == -1)
          root = getfa(i);
        else if (getfa(i) != root)
          suc = 0;
      } else if ((acc[i] & S) == 0)
        suc = 0;
      if (!suc) return;
    }
    ans = m;
    rem = S;
    return;
  }
  int a = getfa(x);
  for (int i = 0; i <= n - 1; i++) f[x][i] = fa[i];
  for (int i = 0; i <= n - 1; i++)
    if (acc[x] & (1 << i) & S) {
      int b = getfa(i);
      if (b != a) fa[b] = a;
    }
  DFS(x + 1, S | (1 << x), m + 1);
  for (int i = 0; i <= n - 1; i++) fa[i] = f[x][i];
  DFS(x + 1, S, m);
}
int main() {
  int m, u, v;
  scanf("%d%d", &n, &m);
  ans = n + 1;
  if (n * (n - 1) / 2 == m) return printf("0"), 0;
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &u, &v);
    u--, v--;
    acc[u] |= (1 << v);
    acc[v] |= (1 << u);
  }
  for (int i = 0; i <= n - 1; i++) fa[i] = i;
  for (int i = 0; i <= n - 1; i++) acc[i] |= (1 << i);
  DFS(0, 0, 0);
  printf("%d\n", ans);
  for (int i = 0; i <= n - 1; i++)
    if (rem & (1 << i)) printf("%d ", i + 1);
  return 0;
}
