#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
const int INF=1e9;

int main(){
    int n,m;
    cin>>n>>m;
    pair<pair<int,int>,int> edge[m];
    int dp[n][n];
    fill(dp[0],dp[n],INF);
    for(int i=0;i<m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        --a,--b;
        edge[i]={{a,b},c};
        dp[a][b]=dp[b][a]=c;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            for(int k=0;k<n;k++){
                dp[j][k]=min(dp[j][k],dp[j][i]+dp[i][k]);
            }
        }
    }
    int ans=0;
    for(int i=0;i<m;i++){
        int a=edge[i].first.first;
        int b=edge[i].first.second;
        int c=edge[i].second;
        if(dp[a][b]!=c)ans++;
    }
    cout<<ans<<endl;
}
