#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MOD 1000000007
#define pb push_back
#define pi pair<ll,ll>
#define pii pair<ll,pair<ll,ll>>
#define psi pair<string,ll>
#define INF 10000000000000005
const ll MAX=1e5+1;
pair <ll,pair<ll,ll> > e[MAX];
ll a[MAX],size[MAX],m,n;
set <pair<ll,ll> > s;
set <pair<ll,ll> >::iterator it;
void initialize()
{
for(ll i=0;i<MAX;i++)
{
a[i]=i;
size[i]=1;
}
}
ll root(ll i)
{
while(i!=a[i])
{
a[i]=a[a[i]];
i=a[i];
}
return i;
}
ll check()
{
ll i,tmp;
tmp=root(1);
for(i=1;i<=n;i++)
{
if(root(i)!=tmp)
return 0;
}
return 1;
}
void union1(ll x,ll y)
{
ll rx,ry;
rx=root(x);
ry=root(y);
if(size[rx]>size[ry])
{
a[ry]=a[rx];
size[rx]+=size[ry];
}
else
{
a[rx]=a[ry];
size[ry]=size[rx];
}
}
ll kruskal(ll t)
{
ll i,x,y,c;
for(i=0;i<m;i++)
{
x=e[i].second.first;
y=e[i].second.second;
c=e[i].first;
if(root(x)!=root(y)&&c==t)
{
union1(x,y);
s.insert(make_pair(min(x,y),max(x,y)));
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll x,y,c,i,flag=0;
cin>>n>>m;
for(i=0;i<m;i++)
{
cin>>x>>y>>c;
e[i]=make_pair(c,make_pair(x,y));
}
initialize();
kruskal(3);
kruskal(1);
flag=check();
if(flag==0)
{
cout<<"-1";
}
else
{
initialize();
kruskal(3);
kruskal(2);
flag=check();
if(flag==0)
{
cout<<"-1";
}
else
{
cout<<(m-s.size());
}
}
return 0;
}
CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBpIHBhaXI8bGwsbGw+CiNkZWZpbmUgcGlpIHBhaXI8bGwscGFpcjxsbCxsbD4+CiNkZWZpbmUgcHNpIHBhaXI8c3RyaW5nLGxsPgojZGVmaW5lIElORiAxMDAwMDAwMDAwMDAwMDAwNQoKICAgIGNvbnN0IGxsIE1BWD0xZTUrMTsKICAgIHBhaXIgPGxsLHBhaXI8bGwsbGw+ID4gZVtNQVhdOwogICAgbGwgYVtNQVhdLHNpemVbTUFYXSxtLG47CiAgICBzZXQgPHBhaXI8bGwsbGw+ID4gczsKICAgIHNldCA8cGFpcjxsbCxsbD4gPjo6aXRlcmF0b3IgaXQ7CgogICAgdm9pZCBpbml0aWFsaXplKCkKICAgIHsKICAgICAgICBmb3IobGwgaT0wO2k8TUFYO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGFbaV09aTsKICAgICAgICAgICAgc2l6ZVtpXT0xOwogICAgICAgIH0KICAgIH0KCiAgICBsbCByb290KGxsIGkpCiAgICB7CiAgICAgICAgd2hpbGUoaSE9YVtpXSkKICAgICAgICB7CiAgICAgICAgICAgIGFbaV09YVthW2ldXTsKICAgICAgICAgICAgaT1hW2ldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaTsKICAgIH0KCiAgICBsbCBjaGVjaygpCiAgICB7CiAgICAgICAgbGwgaSx0bXA7CiAgICAgICAgdG1wPXJvb3QoMSk7CiAgICAgICAgZm9yKGk9MTtpPD1uO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHJvb3QoaSkhPXRtcCkKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHZvaWQgdW5pb24xKGxsIHgsbGwgeSkKICAgIHsKICAgICAgICBsbCByeCxyeTsKICAgICAgICByeD1yb290KHgpOwogICAgICAgIHJ5PXJvb3QoeSk7CiAgICAgICAgaWYoc2l6ZVtyeF0+c2l6ZVtyeV0pCiAgICAgICAgewogICAgICAgICAgICBhW3J5XT1hW3J4XTsKICAgICAgICAgICAgc2l6ZVtyeF0rPXNpemVbcnldOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBhW3J4XT1hW3J5XTsKICAgICAgICAgICAgc2l6ZVtyeV09c2l6ZVtyeF07CiAgICAgICAgfQogICAgfQoKICAgIGxsIGtydXNrYWwobGwgdCkKICAgIHsKICAgICAgICBsbCBpLHgseSxjOwogICAgICAgIGZvcihpPTA7aTxtO2krKykKICAgICAgICB7CiAgICAgICAgICAgIHg9ZVtpXS5zZWNvbmQuZmlyc3Q7CiAgICAgICAgICAgIHk9ZVtpXS5zZWNvbmQuc2Vjb25kOwogICAgICAgICAgICBjPWVbaV0uZmlyc3Q7CiAgICAgICAgICAgIGlmKHJvb3QoeCkhPXJvb3QoeSkmJmM9PXQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVuaW9uMSh4LHkpOwogICAgICAgICAgICAgICAgcy5pbnNlcnQobWFrZV9wYWlyKG1pbih4LHkpLG1heCh4LHkpKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaW50IG1haW4oKQogICAgewogICAgICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgICAgIGNpbi50aWUoTlVMTCk7CiAgICAgICAgbGwgeCx5LGMsaSxmbGFnPTA7CiAgICAgICAgY2luPj5uPj5tOwogICAgICAgIGZvcihpPTA7aTxtO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+eD4+eT4+YzsKICAgICAgICAgICAgZVtpXT1tYWtlX3BhaXIoYyxtYWtlX3BhaXIoeCx5KSk7CiAgICAgICAgfQogICAgICAgIGluaXRpYWxpemUoKTsKICAgICAgICBrcnVza2FsKDMpOwogICAgICAgIGtydXNrYWwoMSk7CiAgICAgICAgZmxhZz1jaGVjaygpOwogICAgICAgIGlmKGZsYWc9PTApCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDwiLTEiOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpbml0aWFsaXplKCk7CiAgICAgICAgICAgIGtydXNrYWwoMyk7CiAgICAgICAgICAgIGtydXNrYWwoMik7CiAgICAgICAgICAgIGZsYWc9Y2hlY2soKTsKICAgICAgICAgICAgaWYoZmxhZz09MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dDw8Ii0xIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PChtLXMuc2l6ZSgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKICAgIH0K