#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
char U[] = "0123456789abcdef";
long long E[20] = {1};
unordered_map<long long, int> dp;
int K, t, I, h, C[20];
int dyn(long long b, int d, int *C) {
  if (!d) return 1;
  if (dp.count(b)) return dp[b];
  int v = 0;
  for (int i(0); i < 16; i++)
    if (C[i] < t) ++C[i], v += dyn(b + E[i], d - 1, C), --C[i];
  return dp[b] = v;
}
void rec(long long b, int d, int *C) {
  if (!d) return;
  for (int i(0); i < 16; i++)
    if (C[i] < t) {
      ++C[i], h = dyn(b + E[i], d - 1, C);
      if (h >= K) return putchar(U[i]), rec(b + E[i], d - 1, C);
      K -= h, --C[i];
    }
}
int main(void) {
  for (int k(1); k < 20; k++) E[k] = E[k - 1] * 11;
  scanf("%d%d", &K, &t);
  while (666) {
    ++C[1], h = dyn(E[1], I, C), --C[1];
    for (int k(1); k < 16; k++) {
      if (h >= K) return putchar(U[k]), ++C[k], rec(E[k], I, C), putchar(10), 0;
      K -= h;
    }
    ++I, dp.clear();
  }
  return 0;
}
