#include <bits/stdc++.h>
using namespace std;
long long l, r;
int freq[10], ans, temp[10];
vector<int> a, b;
void fill1(long long a, vector<int>& v) {
  while (a) {
    v.push_back(a % 10);
    a /= 10;
  }
}
bool thereis(int l, int r) {
  for (int i = l; i <= r; i++)
    if (freq[i]) return 1;
  return 0;
}
int find(int u, int l, int r) {
  if (u == b.size()) return 1;
  if (l && r) {
    if (thereis(a[u] + 1, b[u] - 1)) return 1;
    if (a[u] == b[u] && freq[a[u]]) {
      freq[a[u]]--;
      if (find(u + 1, 1, 1)) return 1;
      freq[a[u]]++;
      return 0;
    }
    if (freq[a[u]]) {
      freq[a[u]]--;
      if (find(u + 1, 1, 0)) return 1;
      freq[a[u]]++;
    }
    if (freq[b[u]]) {
      freq[b[u]]--;
      if (find(u + 1, 0, 1)) return 1;
      freq[b[u]]++;
    }
    return 0;
  }
  if (l) {
    if (thereis(a[u] + 1, 9)) return 1;
    if (!freq[a[u]]) return 0;
    freq[a[u]]--;
    if (find(u + 1, 1, 0)) return 1;
    freq[a[u]]++;
  }
  if (r) {
    if (thereis(0, b[u] - 1)) return 1;
    if (!freq[b[u]]) return 0;
    ;
    freq[b[u]]--;
    if (find(u + 1, 0, 1)) return 1;
    freq[b[u]]++;
  }
  return 0;
}
void calc(int a, int rem) {
  if (a == 10) {
    temp[0] = rem;
    for (int i = 0; i < 10; i++) freq[i] = temp[i];
    ans += find(0, 1, 1);
    freq[0] = 0;
    return;
  }
  for (int i = 0; i <= rem; i++) {
    temp[a] = i;
    calc(a + 1, rem - i);
    temp[a] = 0;
  }
}
int main() {
  scanf("%lld%lld", &l, &r);
  fill1(l, a);
  fill1(r, b);
  while (a.size() < b.size()) a.push_back(0);
  reverse(a.begin(), a.end());
  reverse(b.begin(), b.end());
  calc(1, a.size());
  printf("%d\n", ans);
}
