#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e17;
const long long maxn = 2e5 + 700;
const int mod = 1e9 + 7;
template <typename T>
inline void read(T &a) {
  char c = getchar();
  T x = 0, f = 1;
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + c - '0';
    c = getchar();
  }
  a = f * x;
}
long long n, m, p;
char s[maxn];
int a[maxn], b[maxn];
int digit(long long x, int *d) {
  int ans = 0;
  while (x) {
    d[++ans] = x % 10;
    x /= 10;
  }
  return ans;
}
int path[maxn];
int check(int pos, int lbound, int rbound) {
  if (!pos) return 1;
  if (!lbound && !rbound) return 1;
  int l = lbound ? a[pos] : 0;
  int r = rbound ? b[pos] : 9;
  for (int i = l; i <= r; i++) {
    if (path[i] > 0) {
      path[i]--;
      if (check(pos - 1, lbound && i == l, rbound && i == r)) {
        path[i]++;
        return 1;
      }
      path[i]++;
    }
  }
  return 0;
}
int pos, res = 0;
void dfs(int u, int w) {
  if (u == 9) {
    path[u] = w;
    if (check(pos, 1, 1)) res++;
    return;
  }
  for (int i = 0; i <= w; i++) {
    path[u] = i;
    dfs(u + 1, w - i);
  }
}
int main() {
  read(n);
  read(m);
  digit(n, a);
  pos = digit(m, b);
  dfs(0, pos);
  printf("%d\n", res);
  return 0;
}
