L = input()
p = 10**9+7
dp=[[0]*2 for i in range(len(L)+1)]
dp[0][0]=1
for digit, i in enumerate(L):
  # a+b = 0
  if L[digit] == "0":
    dp[digit + 1][0] = dp[digit][0]
    dp[digit + 1][1] = dp[digit][1]
  else:
    dp[digit + 1][1] = (dp[digit][0] + dp[digit][1]) % p
  # a+b = 1
  if L[digit] == "0":
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
  else:
    dp[digit + 1][0] += dp[digit][0]*2 % p
    dp[digit + 1][0] %= p
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
ans = (dp[len(L)][0]+dp[len(L)][1]) % p
print(ans) L = input() L input() input p = 10**9+7 p 10**9+7 10**9 10 9 7 [0]*2 for i in range(len(L)+1) for i in range(len(L)+1) i range(len(L)+1) range len(L)+1 len(L) len L 1 for i in range(len(L)+1) [0]*2 [0] 0 2 dp=[[0]*2 for i in range(len(L)+1)] dp [[0]*2 for i in range(len(L)+1)] dp[0][0]=1 dp[0][0] [0] dp 0 0 1 for digit, i in enumerate(L):
  # a+b = 0
  if L[digit] == "0":
    dp[digit + 1][0] = dp[digit][0]
    dp[digit + 1][1] = dp[digit][1]
  else:
    dp[digit + 1][1] = (dp[digit][0] + dp[digit][1]) % p
  # a+b = 1
  if L[digit] == "0":
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
  else:
    dp[digit + 1][0] += dp[digit][0]*2 % p
    dp[digit + 1][0] %= p
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p digit i enumerate(L) enumerate L if L[digit] == "0":
    dp[digit + 1][0] = dp[digit][0]
    dp[digit + 1][1] = dp[digit][1]
  else:
    dp[digit + 1][1] = (dp[digit][0] + dp[digit][1]) % p
  # a+b = 1
   L[digit] == "0" L[digit] L digit "0" dp[digit + 1][0] = dp[digit][0] dp[digit + 1][0] [digit + 1] dp digit + 1 digit 1 0 dp[digit][0] [digit] dp digit 0 dp[digit + 1][1] = dp[digit][1] dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 dp[digit][1] [digit] dp digit 1 dp[digit + 1][1] = (dp[digit][0] + dp[digit][1]) % p dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 (dp[digit][0] + dp[digit][1]) % p dp[digit][0] + dp[digit][1] dp[digit][0] [digit] dp digit 0 dp[digit][1] [digit] dp digit 1 p if L[digit] == "0":
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
  else:
    dp[digit + 1][0] += dp[digit][0]*2 % p
    dp[digit + 1][0] %= p
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p L[digit] == "0" L[digit] L digit "0" dp[digit + 1][1] += dp[digit][1]*2 % p dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 dp[digit][1]*2 % p dp[digit][1]*2 dp[digit][1] [digit] dp digit 1 2 p dp[digit + 1][1] %= p dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 p dp[digit + 1][0] += dp[digit][0]*2 % p dp[digit + 1][0] [digit + 1] dp digit + 1 digit 1 0 dp[digit][0]*2 % p dp[digit][0]*2 dp[digit][0] [digit] dp digit 0 2 p dp[digit + 1][0] %= p dp[digit + 1][0] [digit + 1] dp digit + 1 digit 1 0 p dp[digit + 1][1] += dp[digit][1]*2 % p dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 dp[digit][1]*2 % p dp[digit][1]*2 dp[digit][1] [digit] dp digit 1 2 p dp[digit + 1][1] %= p dp[digit + 1][1] [digit + 1] dp digit + 1 digit 1 1 p ans = (dp[len(L)][0]+dp[len(L)][1]) % p ans (dp[len(L)][0]+dp[len(L)][1]) % p dp[len(L)][0]+dp[len(L)][1] dp[len(L)][0] [len(L)] dp len(L) len L 0 dp[len(L)][1] [len(L)] dp len(L) len L 1 p print(ans) print ans L = input() input() L p = 10**9+7 10**9+7 p ans = (dp[len(L)][0]+dp[len(L)][1]) % p (dp[len(L)][0]+dp[len(L)][1]) % p ans dp=[[0]*2 for i in range(len(L)+1)] [[0]*2 for i in range(len(L)+1)] dp
L = input()
p = 10**9+7
dp=[[0]*2 for i in range(len(L)+1)]
dp[0][0]=1
for digit, i in enumerate(L):
  # a+b = 0
  if L[digit] == "0":
    dp[digit + 1][0] = dp[digit][0]
    dp[digit + 1][1] = dp[digit][1]
  else:
    dp[digit + 1][1] = (dp[digit][0] + dp[digit][1]) % p
  # a+b = 1
  if L[digit] == "0":
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
  else:
    dp[digit + 1][0] += dp[digit][0]*2 % p
    dp[digit + 1][0] %= p
    dp[digit + 1][1] += dp[digit][1]*2 % p
    dp[digit + 1][1] %= p
ans = (dp[len(L)][0]+dp[len(L)][1]) % p
print(ans)