// Solution 37 : Dao chim
#include<bits/stdc++.h>
using namespace std;
int m , n ; // đảo(N) và cầu(m)
vector<int> ke[1001];
bool visited[1001];
int ans = 0 ;
vector<int> canh_cau;
void inp(){
cin >> n >> m ;
for(int i = 1 ; i <= m ; i++){
int x,y;
cin >> x >> y;
ke[x].push_back(y);
ke[y].push_back(x);
}
}
void DFS(int u){
visited[u] = true;
for(int x : ke[u]){
if(!visited[x]){
DFS(x);
}
}
}
int tplt(){
int ans = 0;
for(int i = 1 ; i<= n ; i++){
if(!visited[i]){
DFS(i);
ans++;
}
}
return ans;
}
void dinh_tru(){
int cc = tplt();
for(int i = 1 ; i <= n ; i++){
memset(visited,false,sizeof(visited));
visited[i] = true;
if(tplt() >> cc){
canh_cau.push_back(i);
}
}
}
int main(){
inp();
dinh_tru();
cout << canh_cau.size();
}
Ly8gU29sdXRpb24gMzcgOiBEYW8gY2hpbSAKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG0gLCBuIDsgLy8gxJHhuqNvKE4pIHbDoCBj4bqndShtKQp2ZWN0b3I8aW50PiBrZVsxMDAxXTsKYm9vbCB2aXNpdGVkWzEwMDFdOwppbnQgYW5zID0gMCA7CnZlY3RvcjxpbnQ+IGNhbmhfY2F1OyAKdm9pZCBpbnAoKXsKICAgIGNpbiA+PiBuID4+IG0gOwogICAgZm9yKGludCBpID0gMSA7IGkgPD0gbSA7IGkrKyl7CiAgICAgICAgaW50IHgseTsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIGtlW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBrZVt5XS5wdXNoX2JhY2soeCk7CiAgICB9Cn0Kdm9pZCBERlMoaW50IHUpewogICAgdmlzaXRlZFt1XSA9IHRydWU7CiAgICBmb3IoaW50IHggOiBrZVt1XSl7CiAgICAgICAgaWYoIXZpc2l0ZWRbeF0pewogICAgICAgICAgICBERlMoeCk7CiAgICAgICAgfQogICAgfQp9CmludCB0cGx0KCl7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDEgOyBpPD0gbiA7IGkrKyl7CiAgICAgICAgaWYoIXZpc2l0ZWRbaV0pewogICAgICAgICAgICBERlMoaSk7CiAgICAgICAgICAgIGFucysrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cn0Kdm9pZCBkaW5oX3RydSgpewogICAgaW50IGNjID0gdHBsdCgpOwogICAgZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKyl7CiAgICAgICAgbWVtc2V0KHZpc2l0ZWQsZmFsc2Usc2l6ZW9mKHZpc2l0ZWQpKTsKICAgICAgICB2aXNpdGVkW2ldID0gdHJ1ZTsKICAgICAgICBpZih0cGx0KCkgPj4gY2MpewogICAgICAgICAgICBjYW5oX2NhdS5wdXNoX2JhY2soaSk7CiAgICAgICAgfQogICAgfQp9CmludCBtYWluKCl7CiAgICBpbnAoKTsKICAgIGRpbmhfdHJ1KCk7CiAgICBjb3V0IDw8IGNhbmhfY2F1LnNpemUoKTsKfQ==