#include using namespace std; using i64 = long long; class range {private: struct I{int x;int operator*(){return x;}bool operator!=(I& lhs){return x solve(string s) { int sz = s.size(); memset(dp, 0, sizeof(dp)); dp[0][0][0] = 1; for(int i : range(sz)) { for(int j : range(f(i))) { dp[i][j][0] %= mod; dp[i][j][1] %= mod; int ith = s[i] - '0'; for(int k : range(ith)) { dp[i+1][j+k][1] += dp[i][j][0]; } dp[i+1][j+ith][0] += dp[i][j][0]; for(int k : range(10)) { dp[i+1][j+k][1] += dp[i][j][1]; } } } vector res(f(sz)); for(int i : range(f(sz))) { res[i] = (dp[sz][i][0] + dp[sz][i][1]) % mod; } return res; } int main(void) { string s, t; cin >> s >> t; vector a = solve(s); vector b = solve(t); i64 res = 0; for(int i : range(min(a.size(), b.size()))) { res += a[i] * b[i] % mod; } printf("%d\n", int((res + mod - 1) % mod)); return 0; }