#include<bits/stdc++.h>
using namespace std;
vector<int>c[500005];
long long ans=0,x[500005],f[500005];
int n,fa,l[500005],v[500005];
string s;
void dfs(int r,int m){
l[m]=r;
if(m>=2){
if(s[r]==')'&&s[l[m-1]]=='('){
x[m]=1+x[m-2];
if(x[m-2])v[m]=v[m-2];
else if(s[l[m-2]]=='(')v[m]=m-2;
}
else if(s[r]==')'&&m>=4&&v[m-1]){
int k=v[m-1]-1;
x[m]=1+x[k];
if(x[k])v[m]=v[k];
else if(s[k]=='(')v[m]=k;
}
f[m]=x[m]+f[m-1];
ans^=r*f[m];
}
for(int i=0,j=c[r].size();i<j;++i)dfs(c[r][i],m+1);
v[m]=x[m]=f[m]=0;
return;
}
int main()
{
scanf("%d",&n);
cin>>s;
s="0"+s;
for(int i=2;i<=n;++i){
scanf("%d",&fa);
c[fa].push_back(i);
}
dfs(1,1);
printf("%lld",ans);
return 0;
}