int mincost[MAX_V]; //集合Xからの最小コスト
bool used[MAX_V]; //頂点iがxに含まれているか
int m; //頂点数

using namespace std;

int main(){
  int n,i,c,j,a,b;
  
  while(1){
    scanf("%d",&n); if(n==0) break;
 scanf("%d",&m);
    for(j=0;j<m;j++){
      for(i=0;i<m;++i){
	cost[j][i]=INF;
      }
    }
    for(i=0;i<m;i++){
      scanf("%d,%d",&a,&b); scanf(",%d",&c);
      cost[a][b]=c/100-1;
      cost[b][a]=c/100-1;
    }
    printf("%d\n",prim());
    
  }
  return 0;
}

int prim(){
  
  //初期化
  for(int i=0;i<m;++i){
    mincost[i]=INF;
    used[i]=false;
  }
  
  mincost[0]=0;
  int res=0;
  
  while(true){
    int v=-1;
    //xに属さない頂点のうちxからの辺のコストが最小になる頂点を探す
    for(int u=0;u<m;u++){
      if(!used[u]&&(v==-1||mincost[u]<mincost[v])) v=u;
    }
    if(v==-1) break;
    
    used[v]=true; //頂点vをxに追加
    res+=mincost[v]; //辺のコストを比べる
    
    for(int u=0;u<m;u++){
      mincost[u]=min(mincost[u],cost[v][u]);
    }
  }
  return res;
}