#include<iostream>#include<stdlib.h>#include<stdio.h>#include<string.h>usingnamespace std;#define MAXN 222bool gra[MAXN][MAXN], vis[MAXN];int match[MAXN], col[MAXN];int ans, n;boolcheck(int cur,int color){
col[cur]= color;for(int i =1; i <= n; i++){if(gra[cur][i]){if(col[i]!=-1){if(col[i]== color)returnfalse;}elseif(!check(i,!color))return0;}}return1;}booldfs(int x){for(int i =1; i <= n; i++){if( i != x && gra[x][i]&&!vis[i]){
vis[i]=1;if(!match[i]||dfs(match[i])){
match[i]= x;return1;}}}return0;}voidsolve(){
ans =0;for(int i =1; i <= n; i++){memset(vis,0,sizeof(vis));if(dfs(i)) ans++;}printf("%d\n",ans/2);}intmain(){int u, v, m;while(scanf("%d %d",&n,&m)!= EOF){memset(gra,0,sizeof(gra));memset(match,0,sizeof(match));memset(col,-1,sizeof(col));for(int i =0; i < m; i++){scanf("%d %d",&u,&v);
gra[u][v]= gra[v][u]=1;}if(!check(1,1))printf("No\n");elsesolve();}return0;}