S=input() mod=998244353 N=len(S) zero=[0]*(N+1) ques=[0]*(N+1) c=0 for i in range(N): if S[i]=='0': zero[i+1]=zero[i]+1 else: zero[i+1]=zero[i] for i in range(N-1,-1,-1): if S[i]=='?': c+=1 ques[i]=ques[i+1]+1 else: ques[i]=ques[i+1] ans=0 for i in range(N): if S[i]=='1': ans+=zero[i]*(zero[-1]-zero[i+1])*pow(2,c,mod) ans%=mod ans+=zero[i]*ques[i+1]*pow(2,c-1,mod) ans%=mod ans+=(ques[0]-ques[i])*(zero[-1]-zero[i+1])*pow(2,c-1,mod) ans%=mod ans+=(ques[0]-ques[i])*ques[i+1]*pow(2,c-2,mod) elif S[i]=='?': ans+=zero[i]*(zero[-1]-zero[i+1])*pow(2,c-1,mod) ans%=mod ans+=zero[i]*ques[i+1]*pow(2,c-2,mod) ans%=mod ans+=(ques[0]-ques[i])*(zero[-1]-zero[i+1])*pow(2,c-2,mod) ans%=mod ans+=(ques[0]-ques[i])*ques[i+1]*pow(2,c-3,mod) print(ans)