L = str(input())
mod = 10 ** 9 + 7

#a + b = a xor b を満たすのは a, b の bit が一つも被っていないとき
ans = 1
three = [1] * (len(L) + 1)
for i in range(len(L)):
  ans *= 3
  ans %= mod
  three[i + 1] = ans
  
#print(three)
x = 1
for i in range(len(L)):
  if L[i] == "0":
    y = x * 2
    #print(three[len(L) - i - 1], y, i)
    y *= three[len(L) - i - 1]
    #print(y)
    #y %= mod
    ans -= y
    ans %= mod
  else:
    x *= 2
    x %= mod
    
print(ans)    

 L = str(input()) L str(input()) str input() input mod = 10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 ans = 1 ans 1 three = [1] * (len(L) + 1) three [1] * (len(L) + 1) [1] 1 len(L) + 1 len(L) len L 1 for i in range(len(L)):
  ans *= 3
  ans %= mod
  three[i + 1] = ans
  
#print(three) i range(len(L)) range len(L) len L ans *= 3 ans 3 ans %= mod ans mod three[i + 1] = ans three[i + 1] three i + 1 i 1 ans x = 1 x 1 for i in range(len(L)):
  if L[i] == "0":
    y = x * 2
    #print(three[len(L) - i - 1], y, i)
    y *= three[len(L) - i - 1]
    #print(y)
    #y %= mod
    ans -= y
    ans %= mod
  else:
    x *= 2
    x %= mod
     i range(len(L)) range len(L) len L if L[i] == "0":
    y = x * 2
    #print(three[len(L) - i - 1], y, i)
    y *= three[len(L) - i - 1]
    #print(y)
    #y %= mod
    ans -= y
    ans %= mod
  else:
    x *= 2
    x %= mod
     L[i] == "0" L[i] L i "0" y = x * 2 y x * 2 x 2 y *= three[len(L) - i - 1] y three[len(L) - i - 1] three len(L) - i - 1 len(L) - i len(L) len L i 1 ans -= y ans y ans %= mod ans mod x *= 2 x 2 x %= mod x mod print(ans) print ans ans %= mod mod ans x %= mod mod x L = str(input()) str(input()) L y *= three[len(L) - i - 1] three[len(L) - i - 1] y ans -= y y ans x = 1 1 x three = [1] * (len(L) + 1) [1] * (len(L) + 1) three mod = 10 ** 9 + 7 10 ** 9 + 7 mod ans = 1 1 ans y = x * 2 x * 2 y ans *= 3 3 ans x *= 2 2 x ans %= mod mod ans
L = str(input())
mod = 10 ** 9 + 7

#a + b = a xor b を満たすのは a, b の bit が一つも被っていないとき
ans = 1
three = [1] * (len(L) + 1)
for i in range(len(L)):
  ans *= 3
  ans %= mod
  three[i + 1] = ans
  
#print(three)
x = 1
for i in range(len(L)):
  if L[i] == "0":
    y = x * 2
    #print(three[len(L) - i - 1], y, i)
    y *= three[len(L) - i - 1]
    #print(y)
    #y %= mod
    ans -= y
    ans %= mod
  else:
    x *= 2
    x %= mod
    
print(ans)    


