/*
TASK: zala
LANG: C++
*/

#include <cstdio>
#include <cstdlib>
#include <vector>
#define maxN 50003

using namespace std;

vector <int> G[maxN];
int queue[maxN];
char used[maxN];
int m,n;

void input()
{
     int i,a,b;
     scanf("%d%d",&n,&m);
     for (i=0;i<m;++i) {
         scanf("%d%d",&a,&b);
         G[a].push_back(b);
         G[b].push_back(a);
         }
}

char bfs(int s)
{
     int l=0,r=1,i,j;
     queue[0] = (s+1)%n;
     used[(s+1)%n] = 1;
     while (l != r) {
              if (queue[l] != s)
              for (i=0;i<G[queue[l]].size();++i) {
                  if (!used[G[queue[l]][i]] && G[queue[l]][i] != s) {
                     queue[r++] = G[queue[l]][i];
                     used[G[queue[l]][i]] = 1;
                     }
                  }
                  /*for (j=l;j<r;++j) printf("%d ",queue[j]);
                  printf("\n");*/
           ++l;
           }
     for (i=0;i<n;++i) if (!used[i] && i != s) return 1;
     return 0; 
}

int main()
{
    int i,j=0;
    input();
    for (i=0;i<n;++i) {
        j+=bfs(i);
        memset(used,0,n+2);
        }
    printf("%d\n",j);
    return 0;
}
