#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e5+5;
int w[N],h[N],n,ans,f[N];
char ch[N];
vector<int>s[N];
inline int read(){
int x=0,f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x*f;}
void dfs(int u){
w[u]=w[f[u]];
if(ch[u]=='(') w[u]=u;
else if(w[u]) h[u]=1+h[f[w[u]]],w[u]=w[f[w[u]]];
for(int i=0;i<s[u].size();i++) dfs(s[u][i]);}
main(){ n=read();
for(int i=1;i<=n;i++) cin>>ch[i];
for(int i=2;i<=n;i++){
f[i]=read();
s[f[i]].push_back(i);
} dfs(1),ans=h[1];
for(int i=2;i<=n;i++) ans^=(i*h[i]);
cout<<ans; return 0;
}