#include <bits/stdc++.h>
using namespace std;
long long N, M, actual = 0, a, b, ans = 0;
struct node {
  vector<long long> edges;
  long long supposed_color;
  bool visited;
};
node tree[10010];
void dfs(long long n, long long color) {
  tree[n].visited = 1;
  if (color != tree[n].supposed_color) {
    ans++;
    color = tree[n].supposed_color;
  }
  for (long long i = 0; i < tree[n].edges.size(); i++) {
    if (!tree[tree[n].edges[i]].visited) dfs(tree[n].edges[i], color);
  }
}
int main() {
  scanf("%lld", &N);
  for (long long i = 0; i < N - 1; i++) {
    scanf("%lld", &a);
    tree[i + 2].edges.push_back(a);
    tree[a].edges.push_back(i + 2);
  }
  for (long long i = 0; i < N; i++) {
    scanf("%lld", &a);
    tree[i + 1].supposed_color = a;
  }
  dfs(1, -1);
  printf("%lld", ans);
  return 0;
}
