Rt /kel
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
freopen("expr.in", "r", stdin);
freopen("expr.out", "w", stdout);
string s;
cin >> s;
if (s.size() == 1)
{
cout << 0;
}
else if (s.size() == 3)
{
if (s[1] == '|')
{
if (s[0] == '1')
{
cout << 1;
}
else
{
cout << 0;
}
}
else
{
if (s[0] == '0')
{
cout << 1;
}
else
{
cout << 0;
}
}
}
else if (s.size() == 5)
{
char pos1 = '2', pos2 = '2';
for (int i = 1; i < 5; i++)
{
if (s[i] == '|' || s[i] == '&')
{
pos2 = s[i];
}
if (s[i] == '1' || s[i] == '0')
{
if (pos1 == '2')
{
pos1 = s[i];
}
else
{
if (pos2 == '2')
{
cout << 0;
}
else if (pos2 == '|')
{
if (pos1 == '1')
{
cout << 1;
}
else
{
cout << 0;
}
}
else
{
if (pos1 == '0')
{
cout << 1;
}
else
{
cout << 0;
}
}
}
return 0;
}
}
return 0;
}
else
{
// 0 -> |
// 1 -> &
bool f;
int len = s.size();
int pos = -1;
for (int i = 0; i < len; i++)
{
if (pos == -1)
{
if (s[i] == '1' || s[i] == '0')
{
pos = i;
}
}
if (s[i] == '|')
{
f = 0;
break;
}
else if (s[i] == '&')
{
f = 1;
break;
}
}
bool cur = s[pos] - '0';
int ans = 0;
if (f == 0)
{
for (int i = pos + 1; i < len; i++)
{
if (s[i] == '0' || s[i] == '1')
{
if (cur == 1)
{
ans++;
}
cur |= (s[i] - '0');
}
}
}
else
{
for (int i = pos + 1; i < len; i++)
{
if (s[i] == '0' || s[i] == '1')
{
if (cur == 0)
{
ans++;
}
cur &= (s[i] - '0');
}
}
}
cout << ans;
}
return 0;
}