#include <bits/stdc++.h>
using namespace std;
#define int long long
int p, m;
pair<int, int> mulpair(pair<int, int> a, pair<int, int> b){
return {(a.first * b.second + a.second * b.first) % m, (a.second * b.second) % m};
}
pair<int, int> addpair(pair<int, int> a, pair<int, int> b){
return {(a.first + b.first) % m, (a.second + b.second) % m};
}
pair<int, int> subpair(pair<int, int> a, pair<int, int> b){
return {(a.first - b.first + m) % m, (a.second - b.second + m) % m};
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
string a; cin >> a;
cin >> p >> m;
stack<int> s;
vector<int> pos(a.size() + 1);
for(int i = 0; i < a.size(); i++){
if(a[i] != '(' && a[i] != ')') continue;
if(a[i] == '(') s.push(i);
else{
pos[s.top()] = i;
pos[i] = s.top();
s.pop();
}
}
function<pair<int, int>(int, int)> solve = [&](int l, int r){
vector<pair<int, int>> val, exp;
vector<char> op, op2;
for(int i = l; i <= r;){
if(isdigit(a[i])){
int c = 0;
for(; i <= r && isdigit(a[i]); i++) c = (c * 10 + a[i] - '0') % m;
val.push_back({0, c});
}
else if(a[i] == '('){
val.push_back(solve(i + 1, pos[i] - 1));
i = pos[i] + 1;
}
else if(a[i] == 'x') val.push_back({1, 0}), i++;
else op.push_back(a[i++]);
}
exp.push_back(val.front());
for(int i = 1; i < val.size(); i++){
if(op[i - 1] != '*'){
exp.push_back(val[i]);
op2.push_back(op[i - 1]);
continue;
}
exp.back() = mulpair(exp.back(), val[i]);
}
pair<int, int> res = exp.front();
for(int i = 1; i < exp.size(); i++)
if(op2[i - 1] == '+') res = addpair(res, exp[i]);
else res = subpair(res, exp[i]);
return res;
};
auto [x, y] = solve(0, a.size() - 1);
for(int i = 0; i < m; i++){
if((x * i + y) % m == p){
cout << i;
return 0;
}
}
}