#include <bits/stdc++.h>
using namespace std;
int n, m, ea = 0, eb = 0, ff[666666];
int M = 0, fst[666666], vb[666666], nxt[666666];
void ad_de(int a, int b) {
  ++M;
  nxt[M] = fst[a];
  fst[a] = M;
  vb[M] = b;
}
void adde(int a, int b) {
  ad_de(a, b);
  ad_de(b, a);
}
int gf(int x) { return ff[x] ? ff[x] = gf(ff[x]) : x; }
int col[666666], su[666666], sz[666666];
void dfs(int x, int f = 0) {
  col[x] = col[f] ^ 1;
  su[x] = col[x];
  sz[x] = 1;
  for (int e = fst[x], b = vb[e]; e; e = nxt[e], b = vb[e])
    if (b != f) dfs(b, x), su[x] += su[b], sz[x] += sz[b];
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    int ga = gf(a), gb = gf(b);
    if (ga ^ gb)
      adde(a, b), ff[ga] = gb;
    else
      ea = a, eb = b;
  }
  dfs(1);
  if (m == n - 1) {
    if (su[1] != n - su[1]) {
      puts("-1");
      return 0;
    }
    int ans = 0;
    for (int i = 2; i <= n; ++i) ans += abs(sz[i] - su[i] - su[i]);
    printf("%d\n", ans);
    return 0;
  }
}
