#include <bits/stdc++.h>
using namespace std;
long long int M = 998244353;
int d[20];
long long int pp[20];
long long int dp[20][1 << 10][2][10][2];
inline int setbit(int n, int i) { return (n | (1 << i)); }
pair<long long int, long long int> f(int i, int x, int k, int z,
                                     long long int m, long long int n) {
  if (__builtin_popcount(x) > z) return make_pair(0ll, 0ll);
  if (i < 0) return make_pair(1ll, m);
  if (dp[i][x][k][m][0] == -1) {
    int p = k ? d[i] : 9;
    long long int r = 0, w = 0, v = (m * pp[i + 1]) % M;
    pair<long long int, long long int> pr;
    for (long long int j = 0; j <= p; j++) {
      int q = (d[i] == j) ? k : 0;
      int y = (j == 0 && n == 0) ? 0 : setbit(x, j);
      pr = f(i - 1, y, q, z, j, n * 10 + j);
      w = (w + pr.first) % M;
      r = (r + pr.second) % M;
    }
    r = (r + (w * v) % M) % M;
    dp[i][x][k][m][0] = w;
    dp[i][x][k][m][1] = r;
  }
  pair<long long int, long long int> pr =
      make_pair(dp[i][x][k][m][0], dp[i][x][k][m][1]);
  return pr;
}
int getDigits(long long int n) {
  int i = 0;
  while (n) {
    d[i++] = n % 10;
    n /= 10;
  }
  return i;
}
void calc(int n) {
  pp[0] = 1;
  for (int i = 1; i <= n; i++) pp[i] = pp[i - 1] * 10;
  for (int i = 1; i <= n; i++) pp[i] %= M;
}
int main() {
  int k;
  long long int l, r;
  calc(18);
  cin >> l >> r >> k;
  int len = getDigits(r);
  memset(dp, -1, sizeof(dp));
  long long int y = 0, x = f(len - 1, 0, 1, k, 0, 0).second;
  if (l > 1) {
    len = getDigits(l - 1);
    memset(dp, -1, sizeof(dp));
    y = f(len - 1, 0, 1, k, 0, 0).second;
  }
  cout << (x - y + M) % M << endl;
  return 0;
}
