{
TASK:zala
LANG:Pascal
}


program zala;


type TArr = array of array of boolean;
var a: TArr;
var v, e: word;
var criticals: word;
var used: array of boolean;


procedure dfs(k: word);
var i: word;
begin
   used[k] := true;
   for i := 0 to v-1 do
   begin
      if a[k,i] and (not used[i]) then
         dfs(i);
   end;
end;

function is_crit(p: word): boolean;
var k, i, j, c: word;
begin
   for i := 0 to v-1 do
      used[i] := false;
   used[p] := true;
   if p=0 then dfs(1) else dfs(0);
   for i := 0 to v-1 do
   begin
      if not used[i] then
      begin
         is_crit := true;
         exit;
      end;
   end;
   is_crit := false;
end;

procedure main();
var i: integer;
var x, y: word;
begin
   readln(v,e);
   setlength(a, v);
   setlength(used, v);
   for i := 0 to v-1 do
      setlength(a[i], v);
   for y := 0 to v-1 do
   begin
      for x := 0 to v-1 do
         a[x, y] := false;
   end;
   criticals := 0;
   for i := 0 to e-1 do
   begin
      readln(x, y);
      a[x,y] := true;
      a[y,x] := true;
   end;
   for i := 0 to v-1 do
      if is_crit(i) then criticals := criticals+1;
   writeln(criticals);
end;

begin
   main();
end.
