#include<bits/stdc++.h>
using namespace std;
#define v1 v[x][q]
const long long MAXN=100007,MAXM=1000007;
vector<int> ezik[MAXN];
int br=0,st=0;
bool b[MAXM];
int ut=0;
int nach[MAXM];
int reb[MAXM*4],pr[MAXM*4];
void dfs(int x)
{
    b[x]=1;
    br++;
    int ss=nach[x];
    while (ss>=0)
    {
        if (!b[reb[ss]])
        {
            dfs(reb[ss]);
        }
        ss=pr[ss];
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n,m;
    cin>>n>>m;
    for (int q=0;q<m;q++)
    {
        nach[q]=-1;
        int a12;
        cin>>a12;
        ezik[a12].push_back(q);
        cin>>a12;
        ezik[a12].push_back(q);
    }
    for (int q=1;q<=n;q++)
    {
        if (ezik[q].size()>=2)
        {
            for (int w=1;w<ezik[q].size();w++)
            {
                pr[ut]=nach[ezik[q][w]];
                reb[ut]=ezik[q][w-1];
                nach[ezik[q][w]]=ut;
                ut++;
                pr[ut]=nach[ezik[q][w-1]];
                reb[ut]=ezik[q][w];
                nach[ezik[q][w-1]]=ut;
                ut++;
            }
        }
    }
    int ans=0;
    for (int q=0;q<m;q++)
    {
        if (!b[q])
        {
            br=0;
            dfs(q);
            ans+=br/2;
        }
    }
    cout<<ans<<"\n";
}
