#include<bits/stdc++.h>
#define Max 500001
#define int long long
using namespace std;
int k,n,a[Max],fa[Max];
int tmp,ans[Max],sum[Max];
char ch[Max];
vector<int>G[Max];
struct Stack_{
int st[Max],tp=0;
void pop(){tp--;}
int top(){return st[tp];}
bool empty(){return tp==0;}
void push(int x){st[++tp]=x;}
}s;
void dfs(int u){
int tmp;
if(ch[u]==')'){
if(!s.empty())
tmp=s.top(),s.pop(),
ans[u]=ans[fa[tmp]]+1;
}
else s.push(u);
sum[u]=ans[u]+sum[fa[u]];
k^=sum[u]*u;
for(auto v:G[u])
dfs(v);
if(tmp) s.push(tmp);
else s.pop();
}
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++) cin>>ch[i];
for(int i=2;i<=n;i++){
scanf("%lld",&fa[i]),G[fa[i]].push_back(i);
}
dfs(1);
printf("%lld",k);
}