#!/usr/bin/env python3 # %% import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines import numpy as np MOD = 10 ** 9 + 9 max_sum = 9 * 200 + 10 # %% M, D = map(list, read().split()) M = [x - ord('0') for x in M] D = [x - ord('0') for x in D] # %% def make_sum_dist(A): dp_1 = np.zeros(max_sum, np.int64) dp_2 = np.zeros_like(dp_1) dp_1[0] = 1 for x in A: newdp_1 = np.zeros_like(dp_1) newdp_2 = np.zeros_like(dp_2) for i in range(x + 1): newdp_1[i:] += dp_1[: max_sum - i] for i in range(x + 1, 10): newdp_1[i:] += dp_2[: max_sum - i] for i in range(x): newdp_2[i:] += dp_1[: max_sum - i] for i in range(x, 10): newdp_2[i:] += dp_2[: max_sum - i] dp_1 = newdp_1 % MOD dp_2 = newdp_2 % MOD return dp_1 # %% x = make_sum_dist(M) x *= make_sum_dist(D) x %= MOD answer = x[1:].sum() % MOD print(answer)