#include <bits/stdc++.h>
using namespace std;
const int P = 998244353;
vector<int> L, R;
pair<long long, long long> f[25][1500];
long long l, r, dx[25];
int k;
pair<long long, long long> dfs(vector<int> w, int pos, int mask, int cnt,
                               int op) {
  if (pos < 0) return make_pair(0, 0);
  if (!op && ~f[pos][mask].first) return f[pos][mask];
  long long mx = (op ? w[pos] : 9), res = 0, num = 0;
  if (!pos) {
    for (int i = 0; i <= mx; i++)
      if (mask & (1 << i))
        res += i, num++;
      else if (cnt < k)
        res += i, num++;
    if (!op) f[pos][mask] = make_pair(res, num);
    return make_pair(res, num);
  }
  for (int i = 0; i <= mx; i++)
    if (mask & (1 << i) || cnt < k) {
      pair<long long, long long> p;
      if (mask & (1 << i) || !mask && !i)
        p = dfs(w, pos - 1, mask, cnt, op & (i == mx));
      else
        p = dfs(w, pos - 1, mask | (1 << i), cnt + 1, op & (i == mx));
      res = ((long long)i * dx[pos] % P * p.second % P + res + p.first) % P;
      num = (num + p.second) % P;
    }
  if (!op) f[pos][mask] = make_pair(res, num);
  return make_pair(res, num);
}
int main() {
  dx[0] = 1;
  for (int i = 1; i <= 18; i++) dx[i] = (dx[i - 1] * 10) % P;
  scanf("%lld%lld%d", &l, &r, &k);
  l--;
  while (l) L.push_back(l % 10), l /= 10;
  while (r) R.push_back(r % 10), r /= 10;
  memset(f, -1, sizeof(f));
  pair<long long, long long> ansL = dfs(L, L.size() - 1, 0, 0, 1);
  pair<long long, long long> ansR = dfs(R, R.size() - 1, 0, 0, 1);
  printf("%lld\n", (ansR.first - ansL.first + P) % P);
  return 0;
}
