#include <bits/stdc++.h>
using namespace std;
const int N = 23;
const int mod = 1e9 + 7;
int n, m, u, v, dp[1 << N], pos, w[N];
bool f[N], a[N][N];
pair<int, int> pre[1 << N];
bool check() {
  for (int i = (1); i < (n + 1); i++)
    if (f[i])
      for (int j = (1); j < (n + 1); j++)
        if (f[j])
          if (a[i][j] == 0) return 1;
  return 0;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  for (int i = (1); i < (n + 1); i++) a[i][i] = 1;
  for (int i = (1); i < (m + 1); i++) cin >> u >> v, a[u][v] = a[v][u] = 1;
  int s = 1 << n;
  fill_n(dp, s, 1 << 30);
  for (int i = (1); i < (n + 1); i++) {
    memset(f, 0, sizeof(f));
    for (int j = (1); j < (n + 1); j++)
      if (a[i][j] == 1) f[j] = 1;
    dp[1 << (i - 1)] = check();
  }
  for (int i = (1); i < (n + 1); i++)
    for (int j = (1); j < (n + 1); j++)
      if (a[i][j] == 1) w[i] |= 1 << (j - 1);
  for (int i = (1); i < (s); i++) {
    for (int j = (0); j < (n); j++)
      if ((1 << j) & i) {
        if (dp[i | w[j + 1]] > dp[i] + 1)
          dp[i | w[j + 1]] = dp[i] + 1, pre[i | w[j + 1]] = make_pair(i, j + 1);
      }
  }
  cout << max(dp[s - 1] - 1, 0) << "\n";
  pos = s - 1;
  while (dp[pos] > 1) {
    cout << pre[pos].second << " ";
    pos = pre[pos].first;
  }
  return 0;
}
