#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

#define MAX_N 100
int par[MAX_N];
int rank[MAX_N];
void init(int n){
	for(int i=0;i<n;i++){
		par[i]=i;
		rank[i]=0;
	}
}
int find(int x){
	if(par[x]==x)return x;
	return par[x]=find(par[x]);
}
void unite(int x,int y){
	x=find(x);
	y=find(y);
	if(rank[x]<rank[y]){
		par[x]=y;
	}else{
		par[y]=x;
		if(rank[x]==rank[y])rank[x]++;
	}
}
bool same(int x,int y){
	return find(x)==find(y);
}
struct Edge{
	int a,b,c;
	Edge(){}
	Edge(int a,int b,int c):a(a),b(b),c(c){}
	bool operator<(const Edge &e)const{return c<e.c;}
};

int main(){
	int n,m;
	vector<Edge> edge;
	while(cin>>n&&n){
		edge.clear();
		cin>>m;
		for(int i=0;i<m;i++){
			int a,b,c;
			char _;
			cin>>a>>_>>b>>_>>c;
			edge.push_back(Edge(a,b,c/100-1));
		}
		init(n);
		sort(edge.begin(),edge.end());
		int ans=0;
		for(int i=0;i<m;i++){
			Edge &e=edge[i];
			if(!same(e.a,e.b)){
				unite(e.a,e.b);
				ans+=e.c;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}