#include<bits/stdc++.h>
using namespace std;
int fa[500005],n;
char tree[500005];
string s;
int count(string s)
{
int Ans = 0,top = 0,sta[25] = {},ans[25] = {};
for(int i = 0;i < s.size();i++)
{
if(s[i] == '(') sta[++top] = i;
else if(top) ans[i] = ans[sta[top--]-1]+1;
Ans += ans[i];
}
return Ans;
}
int find(int i)
{
string str = "";
while(fa[i] != i)
{
str += tree[i];
i = fa[i];
}
str += tree[1];
reverse(str.begin(),str.end());
return count(str);
}
int main()
{
cin>>n>>s;
for(int i = 0;i < s.size();i++)
{
tree[i+1] = s[i];
}
fa[1] = 1;
for(int i = 1;i < n;i++)
{
cin>>fa[i+1];
}
int ans = find(1)*1;
for(int i = 2;i <= n;i++)
{
ans ^= (find(i)*i);
}
cout<<ans;
}