#include<bits/stdc++.h>
#define rep for(int s,i=lk[x];i;i=hd[i])\
if(i^y&&!del[s=to[i]])
const int N=100005;
using namespace std;
int n,to[N*2],hd[N*2],lk[N],deg[N],cnt=1,
q[N],f[N],g[N],h,t,ans,ini;
bool del[N];
inline void add(int u,int v){
	to[++cnt]=v,hd[cnt]=lk[u],lk[u]=cnt,deg[u]++;
}int u,v;
char a[N];
void dfs(int x,int y){
	rep dfs(s,i^1),f[x]=max(f[x],f[s]);
	f[x]+=a[x];
}
void dfss(int x,int y){
	int mx=g[x],se=0;
	rep{
		if(f[s]>mx)se=mx,mx=f[s];
		else if(f[s]>se)se=f[s];
	}
	ans=max(ans,mx+=a[x]),se+=a[x];
	rep g[s]=f[s]+a[x]<mx?mx:se,dfss(s,i^1);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	scanf("%d%d",&u,&v),
	add(u,v),add(v,u);
	scanf("%s",a+1);
	u=0,ini=n-1<<1;
	for(int i=1;i<=n;i++){
		u+=(a[i]=a[i]=='W');
		if(deg[i]==1)q[t++]=i;
	}
	if(u<2)return printf("%d",u),0;
	for(;h<t;){
		if(a[u=q[h++]])continue;
		del[u]=1,ini-=2;
		for(int i=lk[u];i;i=hd[i])
		if(--deg[v=to[i]]==1)q[t++]=v;
	}
	for(int i=1;i<=n;i++)
	if(!del[i])
	ini+=(a[i]^=deg[i]&1);
	for(int i=1;i<=n;i++)
	if(!del[i]){
		dfs(i,0),dfss(i,0);
		return printf("%d\n",ini-2*ans),0;
	}
}