s = input() mod = 998244353 ans = 0 n = len(s) pre = [] hate = [] last = 0 nowh = 0 for i in range(n): si = s[i] hate.append(last) if si == "0": last += pow(2, nowh, mod) elif si == "?": last *= 2 last += pow(2, nowh, mod) nowh += 1 last %= mod pre.append(last) suf = [] hates = [] nowh = 0 last = 0 for i in range(n)[::-1]: si = s[i] hates.append(last) if si == "0": last += pow(2, nowh, mod) elif si == "?": last *= 2 last += pow(2, nowh, mod) nowh += 1 last %= mod suf.append(last) suf = suf[::-1] hates = hates[::-1] ans = 0 for i in range(1,n-1): if s[i] == "1": ans += pre[i] * suf[i] % mod ans %= mod elif s[i] == "?": ans += hate[i] * hates[i] % mod ans %= mod print(ans)