L=list(map(int,input()))
n=len(L)
def power(a,n):
    x=1
    L=list(format(n,'b'))
    l=len(L)
    for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
    return x
X=power(3,n-1)%(10**9+7)
count=1
for i in range(1,n):
    if L[i]==1:
        k=n-i-1
        count+=1
        X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7))
X+=power(2,count)%(10**9+7)
print(X%(10**9+7)) L=list(map(int,input())) L list(map(int,input())) list map(int,input()) map int input() input n=len(L) n len(L) len L def power(a,n):
    x=1
    L=list(format(n,'b'))
    l=len(L)
    for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
    return x power x=1 x 1 L=list(format(n,'b')) L list(format(n,'b')) list format(n,'b') format n 'b' l=len(L) l len(L) len L for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
     i range(l) range l if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
         int(L[l-i-1])==1 int(L[l-i-1]) int L[l-i-1] L l-i-1 l-i l i 1 1 x=(x*a)%(10**9+7) x (x*a)%(10**9+7) x*a x a 10**9+7 10**9 10 9 7 a=(a*a)%(10**9+7) a (a*a)%(10**9+7) a*a a a 10**9+7 10**9 10 9 7 return x x a a n n X=power(3,n-1)%(10**9+7) X power(3,n-1)%(10**9+7) power(3,n-1) power 3 n-1 n 1 10**9+7 10**9 10 9 7 count=1 count 1 for i in range(1,n):
    if L[i]==1:
        k=n-i-1
        count+=1
        X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) i range(1,n) range 1 n if L[i]==1:
        k=n-i-1
        count+=1
        X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) L[i]==1 L[i] L i 1 k=n-i-1 k n-i-1 n-i n i 1 count+=1 count 1 X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) X (power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) power(3,k)%(10**9+7) power(3,k) power 3 k 10**9+7 10**9 10 9 7 power(2,count-1)%(10**9+7) power(2,count-1) power 2 count-1 count 1 10**9+7 10**9 10 9 7 X+=power(2,count)%(10**9+7) X power(2,count)%(10**9+7) power(2,count) power 2 count 10**9+7 10**9 10 9 7 print(X%(10**9+7)) print X%(10**9+7) X 10**9+7 10**9 10 9 7 X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) (power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7)) X X=power(3,n-1)%(10**9+7) power(3,n-1)%(10**9+7) X k=n-i-1 n-i-1 k count+=1 1 count def power(a,n):
    x=1
    L=list(format(n,'b'))
    l=len(L)
    for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
    return x def power(a,n):
    x=1
    L=list(format(n,'b'))
    l=len(L)
    for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
    return x power count=1 1 count L=list(map(int,input())) list(map(int,input())) L X+=power(2,count)%(10**9+7) power(2,count)%(10**9+7) X n=len(L) len(L) n
L=list(map(int,input()))
n=len(L)
def power(a,n):
    x=1
    L=list(format(n,'b'))
    l=len(L)
    for i in range(l):
        if int(L[l-i-1])==1:        
            x=(x*a)%(10**9+7)
        a=(a*a)%(10**9+7)
    return x
X=power(3,n-1)%(10**9+7)
count=1
for i in range(1,n):
    if L[i]==1:
        k=n-i-1
        count+=1
        X+=(power(3,k)%(10**9+7))*(power(2,count-1)%(10**9+7))
X+=power(2,count)%(10**9+7)
print(X%(10**9+7))
