#include <bits/stdc++.h>

using namespace std;

const int INF = 1 << 29;


int N, M;
int A[2000], B[2000], C[2000];
int g[100][100];

int main()
{
  fill_n(*g, 100 * 100, INF);

  cin >> N >> M;
  for(int i = 0; i < M; i++) {
    cin >> A[i] >> B[i] >> C[i];
    g[--A[i]][--B[i]] = C[i];
    g[B[i]][A[i]] = C[i];
  }

  for(int k = 0; k < N; k++) {
    for(int i = 0; i < N; i++) {
      for(int j = 0; j < N; j++) {
        g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
      }
    }
  }

  int vv = 0;
  for(int i = 0; i < M; i++) {
    if(g[A[i]][B[i]] != C[i]) ++vv;
  }
  cout << vv << endl;
}