#include <bits/stdc++.h>
using namespace std;
int n, m;
int neighbor[30], num[1 << 22];
bool isConnect[1 << 22];
int ans, set_of_p;
int main() {
  scanf("%d%d", &n, &m);
  int u, v;
  for (int i = 1; i < (1 << n); ++i) num[i] = num[i - (i & -i)] + 1;
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d", &u, &v);
    neighbor[u] |= 1 << v - 1;
    neighbor[v] |= 1 << u - 1;
  }
  int all = (1 << n) - 1;
  bool flag = 1;
  for (int i = 1; i <= n; ++i) {
    neighbor[i] |= 1 << i - 1;
    if (neighbor[i] != all) {
      flag = 0;
    }
  }
  if (flag) {
    puts("0");
    return 0;
  }
  ans = n;
  for (int i = 1; i <= n; ++i) isConnect[1 << i - 1] = 1;
  for (int i = 1; i < (1 << n); ++i) {
    if (!isConnect[i]) continue;
    int mask = 0;
    for (int j = 1; j <= n; ++j) {
      if ((1 << j - 1) & i) mask |= neighbor[j];
    }
    if (mask == all) {
      if (num[i] < ans) {
        ans = num[i];
        set_of_p = i;
      }
    }
    for (int j = 1; j <= n; ++j) {
      if ((1 << j - 1) & mask) isConnect[i | (1 << j - 1)] = 1;
    }
  }
  printf("%d\n", ans);
  for (int i = 1; i <= n; ++i) {
    if (set_of_p & (1 << i - 1)) printf("%d ", i);
  }
  putchar('\n');
}
