#include <bits/stdc++.h>
using namespace std;
int n;
int m;
vector<int> v[100002];
bool use[100002];
int C = 0;
inline int dfs(int b) {
  use[b] = true;
  int X = 0;
  int cnt = 0;
  for (int i = 0; i < v[b].size(); i++) {
    if (use[v[b][i]]) continue;
    X ^= dfs(v[b][i]);
    cnt++;
  }
  if (cnt == 0) {
    C++;
    return 1;
  }
  if (X == 0) C++;
  return X ^ 1;
}
int main() {
  cin >> n >> m;
  if (n != m + 1) return 1;
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    v[a].emplace_back(b);
    v[b].emplace_back(a);
  }
  int k = dfs(0);
  if (k == 0) {
    cout << C << endl;
  } else {
    puts("-1");
  }
  return 0;
}
