import sys

sys.setrecursionlimit(2**31-1)

input = sys.stdin.readline

write = sys.stdout.write

LMIIS = lambda : list(map(int,input().split()))

II = lambda : int(input())

dbg = lambda *something : print(*something) if DEBUG is True else 0

DEBUG = True







MOD = 10**9 + 7

class ModInt:



    def __init__(self, x):

        self.x = x.x if isinstance(x, ModInt) else x % MOD



    __str__ = lambda self:str(self.x)

    __repr__ = __str__

    __int__ = lambda self: self.x

    __index__ = __int__



    __add__ = lambda self, other: ModInt(self.x + ModInt(other).x)

    __sub__ = lambda self, other: ModInt(self.x - ModInt(other).x)

    __mul__ = lambda self, other: ModInt(self.x * ModInt(other).x)

    __pow__ = lambda self, other: ModInt(pow(self.x, ModInt(other).x, MOD))

    __mod__ = lambda self, other: ModInt(self.x % ModInt(other).x)

    __truediv__ = lambda self, other: ModInt(self.x * pow(ModInt(other).x, MOD - 2, MOD))

    __floordiv__ = lambda self, other: ModInt(self.x // ModInt(other).x)

    __radd__ = lambda self, other: ModInt(other + self.x)

    __rsub__ = lambda self, other: ModInt(other - self.x)

    __rpow__ = lambda self, other: ModInt(pow(other, self.x, MOD))

    __rmod__ = lambda self, other: ModInt(other % self.x)

    __rmul__ = lambda self, other: ModInt(other * self.x)

    __rtruediv__ = lambda self, other: ModInt(other * pow(self.x, MOD - 2, MOD))

    __rfloordiv__ = lambda self, other: ModInt(other // self.x)



    __lt__ = lambda self, other: self.x < ModInt(other).x

    __gt__ = lambda self, other: self.x > ModInt(other).x

    __le__ = lambda self, other: self.x <= ModInt(other).x

    __ge__ = lambda self, other: self.x >= ModInt(other).x

    __eq__ = lambda self, other: self.x == ModInt(other).x

    __ne__ = lambda self, other: self.x != ModInt(other).x





def main():

    S = input()

    N = len(S)-1

    dp = [[0] * 13  for _   in range(N)]

    dp[0] = [ModInt(0) for _ in range(13)]

    

    if S[0] == '?':

        for i in range(10):

            dp[0][i] = ModInt(1)

    else:

        dp[0][int(S[0])] = ModInt(1)



    for i in range(1,N):

        if S[i] == '?':

            for j in range(13):

                for k in range(10):

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

        else:

            for j in range(13):

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

        



    print(dp[len(S)-2][5])



















    pass

if __name__ == '__main__':

    main()

import sys

sys.setrecursionlimit(2**31-1)

input = sys.stdin.readline

write = sys.stdout.write

LMIIS = lambda : list(map(int,input().split()))

II = lambda : int(input())

dbg = lambda *something : print(*something) if DEBUG is True else 0

DEBUG = True







MOD = 10**9 + 7

class ModInt:



    def __init__(self, x):

        self.x = x.x if isinstance(x, ModInt) else x % MOD



    __str__ = lambda self:str(self.x)

    __repr__ = __str__

    __int__ = lambda self: self.x

    __index__ = __int__



    __add__ = lambda self, other: ModInt(self.x + ModInt(other).x)

    __sub__ = lambda self, other: ModInt(self.x - ModInt(other).x)

    __mul__ = lambda self, other: ModInt(self.x * ModInt(other).x)

    __pow__ = lambda self, other: ModInt(pow(self.x, ModInt(other).x, MOD))

    __mod__ = lambda self, other: ModInt(self.x % ModInt(other).x)

    __truediv__ = lambda self, other: ModInt(self.x * pow(ModInt(other).x, MOD - 2, MOD))

    __floordiv__ = lambda self, other: ModInt(self.x // ModInt(other).x)

    __radd__ = lambda self, other: ModInt(other + self.x)

    __rsub__ = lambda self, other: ModInt(other - self.x)

    __rpow__ = lambda self, other: ModInt(pow(other, self.x, MOD))

    __rmod__ = lambda self, other: ModInt(other % self.x)

    __rmul__ = lambda self, other: ModInt(other * self.x)

    __rtruediv__ = lambda self, other: ModInt(other * pow(self.x, MOD - 2, MOD))

    __rfloordiv__ = lambda self, other: ModInt(other // self.x)



    __lt__ = lambda self, other: self.x < ModInt(other).x

    __gt__ = lambda self, other: self.x > ModInt(other).x

    __le__ = lambda self, other: self.x <= ModInt(other).x

    __ge__ = lambda self, other: self.x >= ModInt(other).x

    __eq__ = lambda self, other: self.x == ModInt(other).x

    __ne__ = lambda self, other: self.x != ModInt(other).x





def main():

    S = input()

    N = len(S)-1

    dp = [[0] * 13  for _   in range(N)]

    dp[0] = [0 for _ in range(13)]

    

    if S[0] == '?':

        for i in range(10):

            dp[0][i] = 1

    else:

        dp[0][int(S[0])] = 1



    for i in range(1,N):

        if S[i] == '?':

            for j in range(13):

                for k in range(10):

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

        else:

            for j in range(13):

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

        



    print(dp[len(S)-2][5])



















    pass

if __name__ == '__main__':

    main()

import sys

sys.setrecursionlimit(2**31 - 1)
input = sys.stdin.readline
write = sys.stdout.write
LMIIS = lambda: list(map(int, input().split()))
II = lambda: int(input())
dbg = lambda *something: print(*something) if DEBUG is True else 0
DEBUG = True
MOD = 10**9 + 7


class ModInt:
    def __init__(self, x):
        self.x = x.x if isinstance(x, ModInt) else x % MOD

    __str__ = lambda self: str(self.x)
    __repr__ = __str__
    __int__ = lambda self: self.x
    __index__ = __int__
    __add__ = lambda self, other: ModInt(self.x + ModInt(other).x)
    __sub__ = lambda self, other: ModInt(self.x - ModInt(other).x)
    __mul__ = lambda self, other: ModInt(self.x * ModInt(other).x)
    __pow__ = lambda self, other: ModInt(pow(self.x, ModInt(other).x, MOD))
    __mod__ = lambda self, other: ModInt(self.x % ModInt(other).x)
    __truediv__ = lambda self, other: ModInt(
        self.x * pow(ModInt(other).x, MOD - 2, MOD)
    )
    __floordiv__ = lambda self, other: ModInt(self.x // ModInt(other).x)
    __radd__ = lambda self, other: ModInt(other + self.x)
    __rsub__ = lambda self, other: ModInt(other - self.x)
    __rpow__ = lambda self, other: ModInt(pow(other, self.x, MOD))
    __rmod__ = lambda self, other: ModInt(other % self.x)
    __rmul__ = lambda self, other: ModInt(other * self.x)
    __rtruediv__ = lambda self, other: ModInt(other * pow(self.x, MOD - 2, MOD))
    __rfloordiv__ = lambda self, other: ModInt(other // self.x)
    __lt__ = lambda self, other: self.x < ModInt(other).x
    __gt__ = lambda self, other: self.x > ModInt(other).x
    __le__ = lambda self, other: self.x <= ModInt(other).x
    __ge__ = lambda self, other: self.x >= ModInt(other).x
    __eq__ = lambda self, other: self.x == ModInt(other).x
    __ne__ = lambda self, other: self.x != ModInt(other).x


def main():
    S = input()
    N = len(S) - 1
    dp = [[0] * 13 for _ in range(N)]
    dp[0] = [ModInt(0) for _ in range(13)]
    if S[0] == "?":
        for i in range(10):
            dp[0][i] = ModInt(1)
    else:
        dp[0][int(S[0])] = ModInt(1)
    for i in range(1, N):
        if S[i] == "?":
            for j in range(13):
                for k in range(10):
                    dp[i][(j * 10 + k) % 13] += dp[i - 1][j]
        else:
            for j in range(13):
                dp[i][(j * 10 + int(S[i])) % 13] += dp[i - 1][j]
    print(dp[len(S) - 2][5])
    pass


if __name__ == "__main__":
    main()

import sys

sys.setrecursionlimit(2**31 - 1)
input = sys.stdin.readline
write = sys.stdout.write
LMIIS = lambda: list(map(int, input().split()))
II = lambda: int(input())
dbg = lambda *something: print(*something) if DEBUG is True else 0
DEBUG = True
MOD = 10**9 + 7


class ModInt:
    def __init__(self, x):
        self.x = x.x if isinstance(x, ModInt) else x % MOD

    __str__ = lambda self: str(self.x)
    __repr__ = __str__
    __int__ = lambda self: self.x
    __index__ = __int__
    __add__ = lambda self, other: ModInt(self.x + ModInt(other).x)
    __sub__ = lambda self, other: ModInt(self.x - ModInt(other).x)
    __mul__ = lambda self, other: ModInt(self.x * ModInt(other).x)
    __pow__ = lambda self, other: ModInt(pow(self.x, ModInt(other).x, MOD))
    __mod__ = lambda self, other: ModInt(self.x % ModInt(other).x)
    __truediv__ = lambda self, other: ModInt(
        self.x * pow(ModInt(other).x, MOD - 2, MOD)
    )
    __floordiv__ = lambda self, other: ModInt(self.x // ModInt(other).x)
    __radd__ = lambda self, other: ModInt(other + self.x)
    __rsub__ = lambda self, other: ModInt(other - self.x)
    __rpow__ = lambda self, other: ModInt(pow(other, self.x, MOD))
    __rmod__ = lambda self, other: ModInt(other % self.x)
    __rmul__ = lambda self, other: ModInt(other * self.x)
    __rtruediv__ = lambda self, other: ModInt(other * pow(self.x, MOD - 2, MOD))
    __rfloordiv__ = lambda self, other: ModInt(other // self.x)
    __lt__ = lambda self, other: self.x < ModInt(other).x
    __gt__ = lambda self, other: self.x > ModInt(other).x
    __le__ = lambda self, other: self.x <= ModInt(other).x
    __ge__ = lambda self, other: self.x >= ModInt(other).x
    __eq__ = lambda self, other: self.x == ModInt(other).x
    __ne__ = lambda self, other: self.x != ModInt(other).x


def main():
    S = input()
    N = len(S) - 1
    dp = [[0] * 13 for _ in range(N)]
    dp[0] = [0 for _ in range(13)]
    if S[0] == "?":
        for i in range(10):
            dp[0][i] = 1
    else:
        dp[0][int(S[0])] = 1
    for i in range(1, N):
        if S[i] == "?":
            for j in range(13):
                for k in range(10):
                    dp[i][(j * 10 + k) % 13] = (
                        dp[i][(j * 10 + k) % 13] + dp[i - 1][j]
                    ) % MOD
        else:
            for j in range(13):
                dp[i][(j * 10 + int(S[i])) % 13] = (
                    dp[i][(j * 10 + int(S[i])) % 13] + dp[i - 1][j]
                ) % MOD
    print(dp[len(S) - 2][5])
    pass


if __name__ == "__main__":
    main()

-    dp[0] = [ModInt(0) for _ in range(13)] +    dp[0] = [0 for _ in range(13)] -            dp[0][i] = ModInt(1) +            dp[0][i] = 1 -        dp[0][int(S[0])] = ModInt(1) +        dp[0][int(S[0])] = 1 -                    dp[i][(j * 10 + k) % 13] += dp[i - 1][j] +                    dp[i][(j * 10 + k) % 13] = ( +                        dp[i][(j * 10 + k) % 13] + dp[i - 1][j] +                    ) % MOD -                dp[i][(j * 10 + int(S[i])) % 13] += dp[i - 1][j] +                dp[i][(j * 10 + int(S[i])) % 13] = ( +                    dp[i][(j * 10 + int(S[i])) % 13] + dp[i - 1][j] +                ) % MOD