S = list(input()) S = list(map(int, S)) N = len(S) dp = [[[0] * 2 for _ in range(11)] for _ in range(N)] dp[0][1][0] = S[0] - 1 dp[0][0][1] = 1 mod = 998244353 L = [0] * 10 L[S[0]] += 1 for i in range(1, N): for j in range(11): # 真に小さい場合 # 奇数個の数が増える if j + 1 <= 10: dp[i][j + 1][0] += dp[i - 1][j][0] * (10 - j) dp[i][j + 1][0] += dp[i - 1][j][1] * 9 dp[i][j + 1][0] %= mod # 奇数個の数が減る if j: dp[i][j - 1][0] += dp[i - 1][j][0] * j dp[i][j - 1][0] %= mod # leading0が続く dp[i][j][1] += dp[i - 1][j][1] dp[i][j][1] %= mod # Nちょうどから遷移してくる場合 pj = sum(L) for j in range(S[i]): L[j] ^= 1 nj = sum(L) dp[i][nj][0] += 1 dp[i][nj][0] %= mod L[j] ^= 1 # Nちょうどの場合の奇数個を管理 L[S[i]] ^= 1 ans = dp[N - 1][0][0] if sum(L) == 0: ans += 1 ans %= mod print(ans)