#include <bits/stdc++.h>
using namespace std;
int q[1 << 23];
char u[1 << 23];
int dp[1 << 23];
pair<int, int> p[1 << 23];
int ql, qr;
int g[25];
int n, m;
vector<int> ans;
void print(int mask) {
  for (int i = 0; i < n; ++i) {
    bool bit = mask & (1 << i);
    cout << bit;
  }
  cout << " ";
}
void bfs(int st) {
  q[qr++] = st;
  u[st] = 1;
  while (ql < qr) {
    int mask = q[ql++];
    for (int i = 0; i < n; ++i) {
      int to = -1;
      if (mask == 0)
        to = g[i];
      else if (mask & (1 << i))
        to = mask | g[i];
      if (to != -1 && !u[to]) {
        u[to] = 1;
        q[qr++] = to;
        dp[to] = dp[mask] + 1;
        p[to] = make_pair(mask, i);
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; ++i) g[i] |= 1 << i;
  for (int i = 1; i <= m; ++i) {
    int x, y;
    cin >> x >> y;
    x--, y--;
    g[x] |= 1 << y;
    g[y] |= 1 << x;
  }
  if (n == 1 || m == n * (n - 1) / 2) {
    cout << "0\n";
    return 0;
  }
  bfs(0);
  for (int v = (1 << n) - 1; v != 0; v = p[v].first) {
    ans.push_back(p[v].second);
  }
  reverse((ans).begin(), (ans).end());
  cout << ((int)(ans).size()) << endl;
  for (int i = 0; i < ((int)(ans).size()); ++i) cout << ans[i] + 1 << " ";
  cout << endl;
  return 0;
}
