import sys

sys.setrecursionlimit(10**9)

input = sys.stdin.readline

MOD = 10**9+7



S = input()[:-1]

#dp[文字列をしたの桁からI番目まで見て][あまりがjになる数] = のこすう

dp = [[0]*13 for _ in range(len(S)+1)]

dp[0][0] = 1



# 文字列を逆順から見ていく

S = list(reversed(S))

for i in range(len(S)):

    if S[i] == "?":

        dig = pow(10, i, 13)

        # ?だと新しく追加する数を10通り試す

        for k in range(10):  # 新しく追加する数

            for j in range(13):  # 各あまりからの遷移

                dp[i+1][(k*dig+j) % 13] += dp[i][j]

                dp[i+1][(k*dig+j) % 13] %= MOD

    else:

        dig = pow(10, i, 13)

        #dig = 10**i

        for j in range(13):

            dp[i+1][(int(S[i])*dig+j) % 13] += dp[i][j]

            dp[i+1][(int(S[i])*dig+j) % 13] %= MOD



print((dp[-1][5]))

S=eval(input())

N=len(S)

C=13

MOD=10**9+7



DP=[[0]*C for _ in range(N+1)]#DP[i][j]はi番目まで見て、あまりがjノヤツの個数

DP[0][0]=1



for i,s in enumerate(S,1):

    if s=="?":

        for k in range(C):

            for j in range(10):

                new_mod=k*10+j

                DP[i][new_mod%13]+=DP[i-1][k]

    else:

        for k in range(C):

            new_mod=k*10+int(s)

            DP[i][new_mod%13]+=DP[i-1][k]

    for k in range(C):

        DP[i][k]%=MOD



print((DP[-1][5]))

import sys

sys.setrecursionlimit(10**9)
input = sys.stdin.readline
MOD = 10**9 + 7
S = input()[:-1]
# dp[文字列をしたの桁からI番目まで見て][あまりがjになる数] = のこすう
dp = [[0] * 13 for _ in range(len(S) + 1)]
dp[0][0] = 1
# 文字列を逆順から見ていく
S = list(reversed(S))
for i in range(len(S)):
    if S[i] == "?":
        dig = pow(10, i, 13)
        # ?だと新しく追加する数を10通り試す
        for k in range(10):  # 新しく追加する数
            for j in range(13):  # 各あまりからの遷移
                dp[i + 1][(k * dig + j) % 13] += dp[i][j]
                dp[i + 1][(k * dig + j) % 13] %= MOD
    else:
        dig = pow(10, i, 13)
        # dig = 10**i
        for j in range(13):
            dp[i + 1][(int(S[i]) * dig + j) % 13] += dp[i][j]
            dp[i + 1][(int(S[i]) * dig + j) % 13] %= MOD
print((dp[-1][5]))

S = eval(input())
N = len(S)
C = 13
MOD = 10**9 + 7
DP = [[0] * C for _ in range(N + 1)]  # DP[i][j]はi番目まで見て、あまりがjノヤツの個数
DP[0][0] = 1
for i, s in enumerate(S, 1):
    if s == "?":
        for k in range(C):
            for j in range(10):
                new_mod = k * 10 + j
                DP[i][new_mod % 13] += DP[i - 1][k]
    else:
        for k in range(C):
            new_mod = k * 10 + int(s)
            DP[i][new_mod % 13] += DP[i - 1][k]
    for k in range(C):
        DP[i][k] %= MOD
print((DP[-1][5]))

-import sys - -sys.setrecursionlimit(10**9) -input = sys.stdin.readline +S = eval(input()) +N = len(S) +C = 13 -S = input()[:-1] -# dp[文字列をしたの桁からI番目まで見て][あまりがjになる数] = のこすう -dp = [[0] * 13 for _ in range(len(S) + 1)] -dp[0][0] = 1 -# 文字列を逆順から見ていく -S = list(reversed(S)) -for i in range(len(S)): -    if S[i] == "?": -        dig = pow(10, i, 13) -        # ?だと新しく追加する数を10通り試す -        for k in range(10):  # 新しく追加する数 -            for j in range(13):  # 各あまりからの遷移 -                dp[i + 1][(k * dig + j) % 13] += dp[i][j] -                dp[i + 1][(k * dig + j) % 13] %= MOD +DP = [[0] * C for _ in range(N + 1)]  # DP[i][j]はi番目まで見て、あまりがjノヤツの個数 +DP[0][0] = 1 +for i, s in enumerate(S, 1): +    if s == "?": +        for k in range(C): +            for j in range(10): +                new_mod = k * 10 + j +                DP[i][new_mod % 13] += DP[i - 1][k] -        dig = pow(10, i, 13) -        # dig = 10**i -        for j in range(13): -            dp[i + 1][(int(S[i]) * dig + j) % 13] += dp[i][j] -            dp[i + 1][(int(S[i]) * dig + j) % 13] %= MOD -print((dp[-1][5])) +        for k in range(C): +            new_mod = k * 10 + int(s) +            DP[i][new_mod % 13] += DP[i - 1][k] +    for k in range(C): +        DP[i][k] %= MOD +print((DP[-1][5]))