#14:07
s = input()
l = len(s)
cnt = 0
ans = 0
mod = 10**9 + 7
di = [1]
tri = [1]
for _ in range(l):
  di.append(di[-1] * 2 % mod)
  tri.append(tri[-1] * 3 % mod)
#print(di)
#print(tri)
for i in range(l):
  if s[i] == '1':
    cnt += 1
    ans += tri[l-1-i] * di[cnt-1]
    ans %= mod
    #print(tri[l-1-i],di[cnt-1])
ans += di[cnt]
ans %= mod
print(ans) s = input() s input() input l = len(s) l len(s) len s cnt = 0 cnt 0 ans = 0 ans 0 mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 di = [1] di [1] 1 tri = [1] tri [1] 1 for _ in range(l):
  di.append(di[-1] * 2 % mod)
  tri.append(tri[-1] * 3 % mod)
#print(di)
#print(tri) _ range(l) range l di.append(di[-1] * 2 % mod) di.append di append di[-1] * 2 % mod di[-1] * 2 di[-1] di -1 2 mod tri.append(tri[-1] * 3 % mod) tri.append tri append tri[-1] * 3 % mod tri[-1] * 3 tri[-1] tri -1 3 mod for i in range(l):
  if s[i] == '1':
    cnt += 1
    ans += tri[l-1-i] * di[cnt-1]
    ans %= mod
    #print(tri[l-1-i],di[cnt-1]) i range(l) range l if s[i] == '1':
    cnt += 1
    ans += tri[l-1-i] * di[cnt-1]
    ans %= mod
    #print(tri[l-1-i],di[cnt-1]) s[i] == '1' s[i] s i '1' cnt += 1 cnt 1 ans += tri[l-1-i] * di[cnt-1] ans tri[l-1-i] * di[cnt-1] tri[l-1-i] tri l-1-i l-1 l 1 i di[cnt-1] di cnt-1 cnt 1 ans %= mod ans mod ans += di[cnt] ans di[cnt] di cnt ans %= mod ans mod print(ans) print ans ans %= mod mod ans mod = 10**9 + 7 10**9 + 7 mod di = [1] [1] di s = input() input() s ans = 0 0 ans ans += di[cnt] di[cnt] ans ans %= mod mod ans l = len(s) len(s) l ans += tri[l-1-i] * di[cnt-1] tri[l-1-i] * di[cnt-1] ans tri = [1] [1] tri cnt = 0 0 cnt cnt += 1 1 cnt
#14:07
s = input()
l = len(s)
cnt = 0
ans = 0
mod = 10**9 + 7
di = [1]
tri = [1]
for _ in range(l):
  di.append(di[-1] * 2 % mod)
  tri.append(tri[-1] * 3 % mod)
#print(di)
#print(tri)
for i in range(l):
  if s[i] == '1':
    cnt += 1
    ans += tri[l-1-i] * di[cnt-1]
    ans %= mod
    #print(tri[l-1-i],di[cnt-1])
ans += di[cnt]
ans %= mod
print(ans)