import std;
void main(){
	auto S=readln.chomp;
	auto L=S.length;
	auto q=DList!(string)([S]);
	bool[string] used;
	used[S]=true;
	auto result=1;
	while(!q.empty){
		auto s=q.front;
		q.removeFront;
		//stderr.writeln(s);
		int[] zo;
		int[] oz;
		for(auto i=0;i<L-1;i++){
			if(s[i]=='0'&&s[i+1]=='1'){
				zo~=i;
			}
			if(s[i]=='1'&&s[i+1]=='0'){
				oz~=i;
			}
		}
		//stderr.writeln(zo);
		//stderr.writeln(oz);
		foreach(i;zo){
			foreach(j;oz){
				if((i-j).abs==1)continue;
				char[] c=s.dup;
				c[i]='1';
				c[i+1]='0';
				c[j]='0';
				c[j+1]='1';
				string cs=c.idup;
				if(cs in used)continue;
				q.insert(cs);
				used[cs.idup]=true;
				result++;
			}
		}
	}
	writeln(result);
}