#include<bits/stdc++.h>

using namespace std;

#define N 1200000

int n,ans;
char s[N];

bool check(int t){
	int l=0,r=t,p=0;
	for (int i=1;i<=n;++i){
		if (s[i]=='0'){++l; ++r;}
		if (s[i]=='1'){--l; --r;}
		if (s[i]=='?'){--l; ++r;}
		if (!p){
			l=max(l,0);
			r=min(r,t);
		}
		else{
			if (l<0) l=1;
			if (r>t) r=t-1;
		}
		if (l>r) return 0;
		if (l==r) p=1;
	}
	return 1;
}

int main(){
	scanf("%s",s+1); n=strlen(s+1);
	int l=1,r=n;
	while (l<=r){
		int mid=(l+r)>>1;
		if (check(mid)){ans=mid; r=mid-1;}
		else l=mid+1;
	}
	printf("%d\n",ans);
	
	return 0;
}
			