#include<bits/stdc++.h>
using namespace std;
char a[500001];
int fa[500001];
struct road{
int to,nex;
}f[500001*2];
int las[500001],tp;
int puts(int a,int b){
f[++tp].to=b;
f[tp].nex=las[a];
las[a]=tp;
}
char k[500001];
int zuo[500001],ff[500001];
long long sum;
long long asd(int now,int top){
long long ans=0;
if(top){
int s=zuo[top];
ans=ff[s-1]+1;
}
ff[now]=ans;
return ans;
}
int dfs(int now,int fa,int size,int top,long long ans){
k[++size]=a[now];
int fl=0;
if(a[now]=='(') zuo[++top]=size;
else{
if(top==0) fl=ff[zuo[top]],ff[zuo[top]]=0;
ans+=asd(size,top);
if(top) top--;
}
sum^=now*ans;
// cout<<now<<' '<<top<<' '<<ans<<endl;
for(int i=las[now];i;i=f[i].nex){
if(f[i].to==fa) continue;
dfs(f[i].to,now,size,top,ans);
}
ff[size]=0;
if(fl) ff[zuo[top]]=fl;
// if(a[now]=='(') zuo[top]=0;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++) cin>>fa[i],puts(fa[i],i),puts(i,fa[i]);
dfs(1,0,0,0,0);
cout<<sum<<endl;
}
8-10WA,其他AC;