<?php

list($n, $m) = explode(' ', rtrim(fgets(STDIN)));

$inputGraph = [];

// m*m の行列を作成
for ($index = 1; $index <= $m; $index++) {

    // cの取りうる値は最大1000なので、重みのデフォルト値をPHP_INT_MAXにして行列の初期化
    $inputGraph[$index] = array_fill(1, $m, PHP_INT_MAX);
    $shortestGraph[$index] = array_fill(1, $m, PHP_INT_MAX);

    // 同じ頂点は重み0
    $inputGraph[$index][$index] = 0;
}

// 各辺の重みを行列に設定
for ($index = 1; $index <= $m; $index++) {

    list($a, $b, $c) = explode(' ', rtrim(fgets(STDIN)));

    $inputGraph[$a][$b] = $c;
    $inputGraph[$b][$a] = $c;
}

$shortestGraph = $inputGraph;

// ワーシャルフロイド法で最短経路を算出
// 経由点
for ($via = 1; $via <= $m; $via++) {
    // 始点
    for($start = 1; $start <= $m; $start++) {
        // 終点
        for($end = $start; $end <= $m; $end++) {
            // 「始点→終点」と「始点→経由点→終点」の小さい方を最短経路とする
            $shortestGraph[$start][$end] = min($shortestGraph[$start][$end], $shortestGraph[$start][$via] + $shortestGraph[$via][$end]);
            $shortestGraph[$end][$start] = min($shortestGraph[$end][$start], $shortestGraph[$end][$via] + $shortestGraph[$via][$start]);
        }
    }
}

$result = 0;

// 行列の上三角を確認
for($start = 1; $start <= $m; $start++) {
    for($end = $start; $end <= $m; $end++) {
        // 入力値と最短経路が違う場合をカウント
        if ($shortestGraph[$start][$end] != $inputGraph[$start][$end]) {
            $result++;
        }
    }
}

echo $result;