#include<bits/stdc++.h>
using namespace std;
char s[1001000];int n,P,suf[1001000];
int main()
{
	scanf("%s",s+1);n=strlen(s+1);
	for(int i=1,now=0;i<=n;i++)
	{
		if(s[i]=='1') now++;else now--;
		P=max(P,now);
	}
	for(int i=n;i;i--)
	{
		suf[i]=suf[i+1];
		if(s[i]=='1') suf[i]++;else suf[i]--;
		suf[i]=max(suf[i],0);
	}
	int ans=n;
	for(int wzp=P;wzp<=P+1;wzp++)
	{
		int res=0,now=0;
		for(int i=1;i<=n;i++)
		{
			if(s[i]=='1') now++;
			if(s[i]=='0') now--;
			if(s[i]=='?')
			{
				if(suf[i+1]+now+1<=wzp) now++;
				else now--;
			}
			res=min(res,now);
		}
		ans=min(ans,wzp-res);
	}
	cout<<ans<<endl;
}