#include <bits/stdc++.h>
using namespace std;
int IN() {
  int c, f, x;
  while (!isdigit(c = getchar()) && c != '-')
    ;
  c == '-' ? (f = 1, x = 0) : (f = 0, x = c - '0');
  while (isdigit(c = getchar())) x = (x << 1) + (x << 3) + c - '0';
  return !f ? x : -x;
}
const int N = 25;
const int oo = (1 << 30) - 1;
int A[N][N], B[N][N], P[N];
int n, m, ans = oo, x, y;
vector<int> V, alb;
pair<int, vector<int> > calc() {
  int tmp = 0;
  vector<int> res;
  memcpy(B, A, sizeof(A));
  for (int w = 1; w < n + 1; w++) {
    int x = P[w], ok = 0;
    for (int i = 1; i < n + 1; i++)
      if (i != x && B[x][i])
        for (int j = i + 1; j < n + 1; j++)
          if (j != x && B[x][j]) {
            if (!B[i][j]) B[i][j] = B[j][i] = 1, ok = 1;
          }
    if (ok) res.push_back(x);
    tmp += ok;
  }
  for (int i = 1; i < n + 1; i++)
    for (int j = i + 1; j < n + 1; j++)
      if (!B[i][j]) return make_pair(oo, alb);
  return make_pair(tmp, res);
}
int main() {
  srand(time(0));
  n = IN(), m = IN();
  for (int i = 0; i < m; i++) {
    x = IN(), y = IN();
    A[x][y] = A[y][x] = 1;
  }
  for (int i = 1; i < n + 1; i++) P[i] = i;
  for (;;) {
    random_shuffle(P + 1, P + n + 1);
    pair<int, vector<int> > tmp = calc();
    if (tmp.first < ans) ans = tmp.first, V = tmp.second;
    if (clock() > 0.9 * CLOCKS_PER_SEC) break;
  }
  printf("%d\n", ans);
  for (int i = 0; i < V.size(); i++) printf("%d ", V[i]);
  puts("");
}
