#include <bits/stdc++.h>
using namespace std;
stack<int> ans, Hiki;
int n, m, dp[23][23];
void dfs(int u) {
  if (Hiki.size() >= ans.size()) return;
  if (u == n) {
    for (int i = 0; i < n; i++) {
      if (dp[u][i] != (1 << n) - 1) return;
    }
    ans = Hiki;
    return;
  }
  memcpy(dp[u + 1], dp[u], sizeof(dp[u]));
  dfs(u + 1);
  for (int i = 0; i < n; i++)
    if (dp[u][u] & (1 << i)) dp[u + 1][i] |= dp[u][u];
  Hiki.push(u + 1);
  dfs(u + 1);
  Hiki.pop();
}
int main() {
  int a, b;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    ans.push(1);
    dp[0][i] = (1 << i);
  }
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &a, &b);
    a--, b--;
    dp[0][a] |= (1 << b);
    dp[0][b] |= (1 << a);
  }
  dfs(0);
  printf("%d\n", ans.size());
  while (!ans.empty()) {
    printf("%d ", ans.top());
    ans.pop();
  }
  return 0;
}
