// 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();
}