/*
TASK:zala
LANG:C++
*/
#include <iostream>
using namespace std;
int a[50001][2]; // spisuk na rebrata
int b[50001]; //broq vruzki kum vurha
int c[50001]; // eliminirani v proces na rabota kompa
long int V, E; //broi kompiutura i vruzki

int main()
{
  long int i;  
  cin >> V >> E ;
  for(i=0; i<E; i++)
  {
     cin >> a[i][0] >> a[i][1];
     b[a[i][0]]++; b[a[i][1]]++;
  }
  
  long int num_shut=0; //broq kompa samo s edna vruzka
  long int num_crit=0; //broi kriti4ni
  do
  {
    num_shut=0;   
    for(i=0; i<V; i++) //obhojdane za edini4ni v masiva b
    {
       if(c[i]) continue; //ako sme go mahnali v proces na eliminaciq
       if(b[i]==1)
       {
           num_shut++;
           num_crit++;
           c[i]=1;     //markiran za premahnat
           for(long int j=0; j<E; j++) 
           {
               if(a[j][1]==i)
               {
                   b[a[j][0]]--; //namalqne broq vruzki kum bashtata
                   break;
               }              
           }
         }
       }
    }
    while(num_shut!=0);
    
    cout << num_crit << endl;
    return 0;                      
}
