#include <bits/stdc++.h>
using namespace std;
struct hen {
  int a;
  int b;
  int omo;
};
struct oya {
  vector<int> ko;
  int oya;
};
int main() {
  int a, b;
  vector<hen> c;
  vector<oya> oyaa(a);
  cin >> a >> b;
  hen d;
  for (int i = 0; i < a; i++) {
    oya k;
    oyaa.push_back(k);
    oyaa[i].oya = 0;
  }
  for (int i = 0; i < b; i++) {
    cin >> d.a >> d.b >> d.omo;
    c.push_back(d);
  }
  for (int i = 0; i < c.size(); i++) {
    for (int j = i; j < c.size() - 1; j++) {
      if (c[j].omo > c[j + 1].omo) swap(c[j], c[j + 1]);
    }
  }
  for (int i = 0; i < c.size(); i++) {
    if (!oyaa[c[i].b].oya) {
      for (int j = 0; j < oyaa[c[i].b].ko.size(); j++) {
        oyaa[c[i].a].ko.push_back(oyaa[c[i].b].ko[j]);
      }
      oyaa[c[i].b].oya = i;
      oyaa[c[i].a].ko.push_back(c[i].b);
    } else {
      for (int j = 0; j < oyaa[oyaa[c[i].b].oya].ko.size(); j++) {
        oyaa[c[i].a].ko.push_back(oyaa[oyaa[c[i].b].oya].ko[j]);
      }
    }
    if (oyaa[c[i].a].ko.size() == a - 1) {
      cout << c.size() - i - 1 << endl;
      return 0;
    }
  }
  cout << 0 << endl;
}
