#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;   }   