#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18 + 10;
const int inf = 1e9 + 10;
const int N = 5e6 + 10;
long long n, m, l, r, now, lim, dp[N], a[30], used[N], pos;
vector<long long> ans;
pair<long long, long long> f[N];
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  cin >> n >> m;
  if (n * (n - 1) / 2 == m) return cout << 0, 0;
  for (int i = 1; i <= m; i++) {
    cin >> l >> r;
    l--;
    r--;
    a[l] |= (1 << l);
    a[r] |= (1 << r);
    a[l] |= (1 << r);
    a[r] |= (1 << l);
  }
  lim = (1 << n);
  for (int i = 1; i < lim; i++) dp[i] = 2e9;
  f[0] = make_pair(-1, -1);
  used[0] = 1;
  for (int i = 0; i < lim; i++) {
    for (int j = 0; j < n; j++)
      if (dp[i | a[j]] > dp[i] + 1 && used[i]) {
        now = i | a[j];
        if ((i & (1 << j)) == 0 && i != 0) continue;
        used[now] = 1;
        dp[now] = dp[i] + 1;
        f[now] = {i, j};
      }
  }
  pos = lim - 1;
  while (f[pos].second != -1) {
    ans.push_back(f[pos].second);
    pos = f[pos].first;
  }
  reverse(ans.begin(), ans.end());
  cout << ans.size() << endl;
  for (auto x : ans) cout << x + 1 << " ";
  return 0;
}
