#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int Par[100],Rank[100];
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;
	}else {
		return Par[x]=find(Par[x]);
	}
}
void unite(int x,int y) {
	x=find(x);
	y=find(y);
	if(x==y) return;
	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 u,v,cost;
	Edge(int _u,int _v,int _cost) {u=_u,v=_v,cost=_cost;}
	bool operator < (const Edge& E) const {return cost<E.cost;}
};
vector<Edge> es;
int main() {
	int n,m,a,b,d;
	while(scanf("%d",&n),n) {
		scanf("%d",&m);
		for(int i=0;i<m;i++) {
			scanf("%d,%d,%d",&a,&b,&d);
			es.push_back(Edge(a,b,d));
		}
		sort(es.begin(),es.end());
		int res=0;
		init(n);
		for(int i=0;i<es.size();i++) {
			if(!same(es[i].u,es[i].v)) {
				unite(es[i].u,es[i].v);
				res+=(es[i].cost/100-1);
			}
		}
		printf("%d\n",res);
	}
}