#include<bits/stdc++.h>
using namespace std;
#define N 100005
int va[N];
int num[20];
int a[20],sz,b[1001000];
int dp[1001000];
int solve(int s)
{
	if(dp[s]) return dp[s];
	dp[s]=1;
	for(int i=s;i;)
	{
		i=(i-1)&s;
		if(i==0) continue;
        if(b[i]==0) dp[s]=max(dp[s],solve(i)+solve(s^i));
	}
	return dp[s];
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<n;++i)
	{
		int u,v,w;
		scanf("%d%d%d",&u,&v,&w);
		va[u]^=w; va[v]^=w;
	}
	for(int i=0;i<n;++i) ++num[va[i]];
	int cnt=num[0];
	for(int i=1;i<=15;++i)
	{
		cnt+=num[i]/2;
		if(num[i]&1) a[sz++]=i;
	}
	for(int s=0;s<(1<<sz);++s)
		for(int i=0;i<sz;++i)
			if(s>>i&1)
				b[s]^=a[i];
	if(sz)cnt+=solve((1<<sz)-1);
	printf("%d\n",n-cnt);
	return 0;
}
