#include<bits/stdc++.h>
#define int long long
using namespace std;

const int SIZE=110;
const int INF=1e18;
struct edge{
    int u,v,cost;
};

signed main()
{
    int N,M; cin>>N>>M;
    vector<vector<int>> dist(N,vector<int>(N,INF));
    for(int i=0;i<N;i++){
        dist[i][i]=0;
    }
    vector<edge> es;
    for(int i=0;i<M;i++){
        int a,b,c; cin>>a>>b>>c;
        a--; b--;
        es.push_back({a,b,c});
        dist[a][b]=dist[b][a]=c;
    }

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

    int ans=0;
    for(edge e:es){
        if(dist[e.u][e.v]<e.cost) ans++;
    }
    cout<<ans<<endl;

    return 0;
}
