#include <bits/stdc++.h>
char strL[19 + 1], strR[19 + 1];
int l, r, i, n, j, sum, k;
int bufL[19] = {0}, bufR[19] = {0};
int *L, *R;
int num[10] = {0}, has[10] = {0};
int ok(void) {
  if (n == 0) {
    return 1;
  }
  for (j = 0; j < 10; j++) {
    has[j] = num[j];
  }
  for (j = L[0] + 1; j < R[0]; j++) {
    if (has[j] > 0) {
      return 1;
    }
  }
  if (has[L[0]] > 0) {
    has[L[0]]--;
    for (i = 1; i < n + 1; i++) {
      if (i >= n) {
        return 1;
      }
      for (j = L[i] + 1; j < 10; j++) {
        if (has[j] > 0) {
          return 1;
        }
      }
      if (has[L[i]] > 0) {
        has[L[i]]--;
      } else {
        break;
      }
    }
  }
  for (j = 0; j < 10; j++) {
    has[j] = num[j];
  }
  if (has[R[0]] > 0) {
    has[R[0]]--;
    for (i = 1; i < n + 1; i++) {
      if (i >= n) {
        return 1;
      }
      for (j = 0; j < R[i]; j++) {
        if (has[j] > 0) {
          return 1;
        }
      }
      if (has[R[i]] > 0) {
        has[R[i]]--;
      } else {
        break;
      }
    }
  }
  return 0;
}
int main(void) {
  scanf("%s%s", strL, strR);
  l = strlen(strL);
  r = strlen(strR);
  L = bufL;
  R = bufR;
  for (i = 0; i < l; i++) {
    L[19 - l + i] = strL[i] - '0';
  }
  for (i = 0; i < r; i++) {
    R[19 - r + i] = strR[i] - '0';
  }
  for (i = 0; i < 19 && L[i] == R[i]; i++)
    ;
  L += i;
  R += i;
  n = 19 - i;
  sum = 0;
  k = 0;
  while (1) {
    for (j = 0; sum > n; j++) {
      if (j >= 8) {
        goto finish;
      }
      sum -= num[j];
      num[j] = 0;
      num[j + 1]++;
      sum++;
    }
    num[9] = n - sum;
    if (ok()) {
      k++;
    }
    num[0]++;
    sum++;
  }
finish:
  printf("%d\n", k);
  return 0;
}
