# 最小全域木

import sys
readline = sys.stdin.readline

N,M = map(int,readline().split())
INF = 10 ** 9
G = [[] for i in range(N)]
for i in range(M):
  a,b,c = map(int,readline().split())
  G[a-1].append([b-1,c])
  G[b-1].append([a-1,c])
  
# Gの適当な頂点から始めて、
# ・最もコストの小さい辺に進む　（heapq）
# ・閉路を作らない(一度行った場所に行かない)
# で進んだ数が辺の数　これを全部の辺の数から引く

import heapq
q = []
for e in G[0]:
  # 辺のコスト、行先
  q.append([e[1],e[0]])

visited = [False for i in range(N)]
visited[0] = True

heapq.heapify(q)
edge = 0
while q:
  c,v = heapq.heappop(q)
  if visited[v]:
    continue
  edge += 1
  visited[v] = True
  for e in G[v]:
    if visited[e[0]]: # 既に行った場所には行かない
      continue
    heapq.heappush(q,[e[1],e[0]])
  
print(M - edge)
