#include <bits/stdc++.h>
using namespace std;
const int maxn = 23;
int n, m, dp[maxn][maxn];
vector<int> res, tmp;
void dfs(int x) {
  if (tmp.size() >= res.size()) return;
  if (x == n) {
    for (int i = 0; i < n; ++i)
      if (dp[n][i] != (1 << n) - 1) return;
    res = tmp;
    return;
  }
  for (int i = 0; i < n; ++i) dp[x + 1][i] = dp[x][i];
  dfs(x + 1);
  for (int i = 0; i < n; ++i)
    if ((dp[x][x] >> i) & 1) dp[x + 1][i] |= dp[x][x];
  tmp.push_back(x + 1);
  dfs(x + 1);
  tmp.pop_back();
}
int main() {
  scanf("%d%d", &n, &m);
  while (m--) {
    int u, v;
    scanf("%d%d", &u, &v);
    --u, --v;
    dp[0][u] |= 1 << v;
    dp[0][v] |= 1 << u;
  }
  for (int i = 0; i < n; ++i) res.push_back(i), dp[0][i] |= 1 << i;
  dfs(0);
  printf("%d\n", res.size());
  for (int i = 0; i < (int)res.size(); ++i)
    printf("%d%c", res[i], i + 1 == (int)res.size() ? '\n' : ' ');
  return 0;
}
