MOD=10**9+7
L=input()

dp_eq=[2]+[-1]*(len(L)-1)
dp_ne=[1]+[-1]*(len(L)-1)

for i in range(1,len(L)):
  if L[i]=="0":
    dp_eq[i]=dp_eq[i-1]
    dp_ne[i]=3*dp_ne[i-1]%MOD
  elif L[i]=="1":
    dp_eq[i]=2*dp_eq[i-1]%MOD
    dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD
    
#print(dp)
print((dp_eq[-1]+dp_ne[-1])%MOD) MOD=10**9+7 MOD 10**9+7 10**9 10 9 7 L=input() L input() input dp_eq=[2]+[-1]*(len(L)-1) dp_eq [2]+[-1]*(len(L)-1) [2] 2 [-1]*(len(L)-1) [-1] -1 len(L)-1 len(L) len L 1 dp_ne=[1]+[-1]*(len(L)-1) dp_ne [1]+[-1]*(len(L)-1) [1] 1 [-1]*(len(L)-1) [-1] -1 len(L)-1 len(L) len L 1 for i in range(1,len(L)):
  if L[i]=="0":
    dp_eq[i]=dp_eq[i-1]
    dp_ne[i]=3*dp_ne[i-1]%MOD
  elif L[i]=="1":
    dp_eq[i]=2*dp_eq[i-1]%MOD
    dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD
    
#print(dp) i range(1,len(L)) range 1 len(L) len L if L[i]=="0":
    dp_eq[i]=dp_eq[i-1]
    dp_ne[i]=3*dp_ne[i-1]%MOD
  elif L[i]=="1":
    dp_eq[i]=2*dp_eq[i-1]%MOD
    dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD
    
#print(dp) L[i]=="0" L[i] L i "0" dp_eq[i]=dp_eq[i-1] dp_eq[i] dp_eq i dp_eq[i-1] dp_eq i-1 i 1 dp_ne[i]=3*dp_ne[i-1]%MOD dp_ne[i] dp_ne i 3*dp_ne[i-1]%MOD 3*dp_ne[i-1] 3 dp_ne[i-1] dp_ne i-1 i 1 MOD elif L[i]=="1":
    dp_eq[i]=2*dp_eq[i-1]%MOD
    dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD
    
#print(dp) L[i]=="1" L[i] L i "1" dp_eq[i]=2*dp_eq[i-1]%MOD dp_eq[i] dp_eq i 2*dp_eq[i-1]%MOD 2*dp_eq[i-1] 2 dp_eq[i-1] dp_eq i-1 i 1 MOD dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD dp_ne[i] dp_ne i (3*dp_ne[i-1]+dp_eq[i-1])%MOD 3*dp_ne[i-1]+dp_eq[i-1] 3*dp_ne[i-1] 3 dp_ne[i-1] dp_ne i-1 i 1 dp_eq[i-1] dp_eq i-1 i 1 MOD print((dp_eq[-1]+dp_ne[-1])%MOD) print (dp_eq[-1]+dp_ne[-1])%MOD dp_eq[-1]+dp_ne[-1] dp_eq[-1] dp_eq -1 dp_ne[-1] dp_ne -1 MOD MOD=10**9+7 10**9+7 MOD L=input() input() L dp_ne=[1]+[-1]*(len(L)-1) [1]+[-1]*(len(L)-1) dp_ne dp_eq=[2]+[-1]*(len(L)-1) [2]+[-1]*(len(L)-1) dp_eq
MOD=10**9+7
L=input()

dp_eq=[2]+[-1]*(len(L)-1)
dp_ne=[1]+[-1]*(len(L)-1)

for i in range(1,len(L)):
  if L[i]=="0":
    dp_eq[i]=dp_eq[i-1]
    dp_ne[i]=3*dp_ne[i-1]%MOD
  elif L[i]=="1":
    dp_eq[i]=2*dp_eq[i-1]%MOD
    dp_ne[i]=(3*dp_ne[i-1]+dp_eq[i-1])%MOD
    
#print(dp)
print((dp_eq[-1]+dp_ne[-1])%MOD)