def calcs(x,y,ax,ay,bx,by) ((ax-x)*(by-y)-(bx-x)*(ay-y))/2.0 end
def inpf() a=gets.chomp.split(" ").map(&:to_f)end
def inps() a=gets.chomp.split(" ")end  
def copy(a) Marshal.load(Marshal.dump(a)) end
def kaizyo(n)(n < 2)? 1 : (2..n).inject(:*) end
def scount(a) b=na(a.max+1);a.each{|n|b[n]+=1};return b end
def na(n,d=0) Array.new(n,d)end
def na2(n,m,d=0) Array.new(n){Array.new(m,d)}end
def na3(n,m,l,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end
def bit(n) n.to_s(2).split("").map(&:to_i) end
def inp() a=gets.chomp.split(" ").map(&:to_i)end
n,m = inp
pas = na2(n+1,0)
rec = na2(n+1,n+1,999999999)
test = []
m.times do 
  a,b,c=inp
  pas[a].push([b,c])
  pas[b].push([a,c])
  test.push([a,b,c])
end
#p pas
used = na(n)
(1..n).each do |s|
  rec[s][s] = 0
  ind = s
  used = na(n+1,0)
  while(ind > 0) do
    used[ind] = true;
    max = 999999
    nex = -1
    tab = pas[ind]
    tab.each do |a|
      hi = a[0]
      next if(used[hi] == true)
      kyori = rec[s][ind] + a[1]
      rec[s][hi] = kyori if rec[s][hi] > kyori
      if max >= rec[s][hi]
        max = rec[s][hi]
        nex = hi
      end
    end
    ind = nex
    used[nex] = true;
  #rererereerer[missmissniu] += [waawawawawwa[bugbugbubg]] if(nex < 0)
  end
end
#p rec
c = 0
test.each do|a|
  if(rec[a[0]][a[1]] != a[2])
    c +=1
  end
end
p c