#include <bits/stdc++.h>
using namespace std;
const double eps = 1.0e-8;
const int maxn = 1e6 + 10;
const int maxm = 300;
const int turn[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
long long mod = 1e9 + 7;
int n, m;
int num[30][30];
stack<int> cur, ans;
int anser = 30;
void dfs(int now) {
  if (cur.size() >= ans.size()) {
    return;
  }
  if (now == n) {
    for (int i = 0; i < n; i++) {
      if (num[n][i] != (1 << n) - 1) {
        return;
      }
    }
    ans = cur;
    return;
  }
  memcpy(num[now + 1], num[now], sizeof(num[now]));
  dfs(now + 1);
  for (int i = 0; i < n; i++) {
    if ((1 << i) & num[now][now]) {
      num[now + 1][i] |= num[now][now];
    }
  }
  cur.push(now);
  dfs(now + 1);
  cur.pop();
}
int main() {
  cin >> n >> m;
  int pa, push_back;
  for (int i = 0; i < n; i++) {
    num[0][i] = 1 << i;
    ans.push(i);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d %d", &pa, &push_back);
    pa--, push_back--;
    num[0][pa] |= 1 << push_back;
    num[0][push_back] |= 1 << pa;
  }
  dfs(0);
  cout << ans.size() << endl;
  while (!ans.empty()) {
    cout << ans.top() + 1 << " ";
    ans.pop();
  }
  cout << endl;
}
