#include<iostream>
#include<string>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
long p(int a)
{
	long re = 1;
	if(a <= 1)
	{
		cout << 1 << endl;
		return 1;
	}
	for(int i = 2;i <= a;i++)
	{
		re *= i;
	}
	return re;
}
long p1(int a)
{
	long re = a-1;
	if(a <= 1)
	{
		cout << 1 << endl;
		return 1;
	}
	for(int i = 2;i <= a-1;i++)
	{
		re *= i;
	}
	return re;
}
int main()
{
	long a,b;
	cin >> a >> b;
	long re = 0;
	int ai = to_string(a).size(),bi = to_string(b).size();
	long aii = pow(10,ai),bii = pow(10,bi);
	int a2 =  a / (aii/10),b2 = b / (bii/10);
	if(bi-ai > 1)
	{
		for(int i = ai+1;i < bi;i++)
		{
			re += p1(i);
		}
	}
	if(bi - ai > 0)
	{
		if(a2 * aii / 10 == a)
		{
			a2--;
		}
		if(bi >= 2)
		{
			if(b % (bii / 10) / (bii / 100) >= bi)
			{
				bi++;
			}
		}
		if(a2 < ai-1)
		{
			re += p(ai-1) * ((ai-1) - a2);
		}
		if(b2 > 1)
		{
			re += p(bi-1) * (b2 - 1);
		}
	}
	else
	{
		if(b2 - a2 > 1)
		{
			re += p(bi-1) * (b2-a2-1);
		}
	}
	for(int i = a;i < (a2+1)*aii/10;i++)
	{
		string ss = to_string(i);
		vector<int> ar(10,0);
		bool f = false;
		for(char c : ss)
		{
			if(ar[c-'0'] != 0 || c-'0' > ss.size()-1)
			{
				f = true;
				break;
			}
			else
			{
				ar[c-'0'] = 1;
			}
		}
		if(!f)
		{
			re++;
		}
	} 
	for(int i = b;i > (b2)*bii/10;i--)
	{
		string ss = to_string(i);
		vector<int> ar(10,0);
		bool f = false;
		for(char c : ss)
		{
			if(ar[c-'0'] != 0 || c-'0' > ss.size()-1)
			{
				f = true;
				break;
			}
			else
			{
				ar[c-'0'] = 1;
			}
		}
		if(!f)
		{
			re++;
		}
	}
	cout << re;
}