RT,全WA
// Problem: P2585 [ZJOI2006]三色二叉树
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2585
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)
#include <bits/stdc++.h>
using namespace std;
int n,sum,f[600000][10];
string s;
struct node
{
int l,r;
}t[600000];
void buildt(int now)
{
sum++;
if(s[now]=='0'){return;}
if(s[now]=='1'){t[now].l=now+1;buildt(now+1);}
else if(s[now]=='2'){t[now].l=now+1;buildt(now+1);t[now].r=sum+1;buildt(sum+1);}
}
int f_ans(bool x)
{
memset(f,0,sizeof(f));
if(!x)
{
for(int i=sum;i>0;i--)
{
f[i][0]=max(f[t[i].l][1]+f[t[i].r][0],f[t[i].l][0]+f[t[i].r][1]);
f[i][1]=f[t[i].l][0]+f[t[i].r][0]+1;
}
return max(f[1][1],f[1][0]);
}
else
{
for(int i=sum;i>0;i--)
{
f[i][0]=min(f[t[i].l][1]+f[t[i].r][0],f[t[i].l][0]+f[t[i].r][1]);
f[i][1]=f[t[i].l][0]+f[t[i].r][0]+1;
}
return min(f[1][1],f[1][0]);
}
}
int main()
{
cin>>s;
buildt(0);
cout<<f_ans(0)<<' '<<f_ans(1);
return 0;
}