#include <bits/stdc++.h>
using namespace std;
int N, M;
int V[25];
bool Use[(1 << 22) + 5];
int Min = 25, PMin = 0;
void Read() {
  cin >> N >> M;
  for (int i = 0; i < N; i++) V[i] += (1 << i);
  for (int i = 1; i <= M; i++) {
    int x, y;
    cin >> x >> y;
    --x;
    --y;
    V[x] = (V[x] | (1 << y));
    V[y] = (V[y] | (1 << x));
  }
}
void Solve(int mask, int nb) {
  if (Use[mask] == 1) return;
  Use[mask] = 1;
  bool ok = 0;
  int V2[25];
  for (int i = 0; i < N; i++) {
    V2[i] = V[i];
    if (V2[i] != (1 << N) - 1) {
      ok = 1;
    }
  }
  if (ok == 0) {
    if (Min > nb) {
      Min = nb;
      PMin = mask;
    }
    return;
  }
  for (int i = 0; i < N; i++) {
    if ((mask & (1 << i)) == 0) {
      int newm = (mask ^ (1 << i));
      if (Use[newm] == 1) continue;
      for (int j = 0; j < N; j++) {
        V[j] = V2[j];
      }
      for (int j = 0; j < N; j++) {
        if ((V2[i] & (1 << j)) != 0) {
          V[j] = (V[j] | V2[i]);
        }
      }
      Solve(newm, nb + 1);
    }
  }
}
int main() {
  Read();
  Solve(0, 0);
  cout << Min << "\n";
  for (int i = 0; i < N; i++) {
    if ((PMin & (1 << i)) != 0) cout << i + 1 << " ";
  }
  cout << "\n";
  return 0;
}
