#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int fa[maxn], cnt[maxn], vis[maxn], arr[maxn];
int fi(int x) { return x == fa[x] ? x : fa[x] = fi(fa[x]); }
int main(int argc, char const *argv[]) {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; ++i) fa[i] = i, cnt[i] = 0, vis[i] = 0, arr[i] = 0;
  for (int i = 1, a, b; i <= m; ++i) {
    scanf("%d %d", &a, &b);
    cnt[a]++;
    cnt[b]++;
    vis[a] = 1;
    vis[b] = 1;
    int fx = fi(a), fy = fi(b);
    if (fx != fy) fa[fx] = fy;
  }
  int ans = 0, tot = 0;
  for (int i = 1; i <= n; ++i) {
    if (cnt[i] % 2 == 1) {
      arr[fi(i)]++;
    }
  }
  int ff = 0;
  int cnt2 = 0, cnt1 = 0;
  for (int i = 2; i <= n; ++i)
    if (vis[i] == 1) ff = 1;
  int cnt = 0;
  for (int i = 1; i <= n; ++i) {
    if (vis[i] && fa[i] == i && arr[i] >= 2) {
      tot = tot + (arr[i] - 2) / 2;
      ++cnt2;
    }
    if (vis[i] && fa[i] == i) tot += 1, cnt++;
  }
  cnt1 = cnt - cnt2;
  if (cnt == 1) {
    if (cnt1 == 1) {
      if (vis[1] == 0)
        printf("2\n");
      else
        printf("0\n");
    } else if (cnt2 == 1) {
      if (vis[1] == 0) tot++;
      printf("%d\n", tot);
    }
  } else if (cnt == 0) {
    printf("0\n");
  } else if (cnt >= 2) {
    if (vis[1] == 0) ++tot;
    printf("%d\n", tot);
  }
  return 0;
}
