#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int mat[25][25];
int cnt[25];
int mask[25];
int n, m;
int idx = 0;
int dp[int(1 << 22)];
int solve(int msk) {
  if (msk == (1 << n) - 1) {
    return dp[msk] = 0;
  }
  int &ans = dp[msk];
  if (~ans) return ans;
  ans = 1e9;
  for (int i = 0; i < n; i++) {
    if (i != idx && (msk & (1 << i))) {
      int msk2 = mask[i];
      if ((msk2 | msk) == msk) continue;
      ans = min(solve(msk2 | msk) + 1, ans);
    }
  }
  return ans;
}
void print(int msk) {
  if (msk == (1 << n) - 1) {
    cout << idx + 1 << endl;
    return;
  }
  for (int i = 0; i < n; i++) {
    if (i != idx && (msk & (1 << i))) {
      int msk2 = mask[i];
      if ((msk2 | msk) == msk) continue;
      if (dp[msk] == dp[(msk2 | msk)] + 1) {
        cout << i + 1 << endl;
        print(msk | msk2);
        return;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  if (m == n * (n - 1) / 2) {
    cout << 0 << endl;
    return 0;
  }
  int msk = 0;
  msk |= 1;
  for (int i = 0; i < n; i++) mask[i] |= (1 << i);
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    mat[a][b] = 1;
    cnt[a]++;
    mask[a] |= (1 << b);
    mat[b][a] = 1;
    mask[b] |= (1 << a);
    cnt[b]++;
  }
  int ans = 1e9;
  int ii = -1;
  for (int i = 0; i < n; i++) {
    idx = i;
    memset(dp, -1, sizeof dp);
    int c = solve(mask[i]);
    if (c < ans) {
      ans = c;
      ii = i;
    }
  }
  idx = ii;
  memset(dp, -1, sizeof dp);
  cout << solve(mask[ii]) + 1 << endl;
  print(mask[ii]);
  return 0;
}
