#include<bits/stdc++.h> using namespace std; #define INT __int128 #define ll long long #define pii pair<int,int> #define pll pair<long long,long long> #define cst const #define u_mp unordered_map #define u_st unordered_set #define prio_q priority_queue #define fastrd ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define rep(i,a,b,c) for(i=a;i<=b;i+=c) #define arep(i,a,b,c) for(i=a;i>=b;i-=c) #define pb push_back cst int INFi=0x3f3f3f3f; cst ll INFl=0x3f3f3f3f3f3f3f3f; cst INT INFI=0x3f3f3f3f3f3f3f3f; template<class T> T read(){ char c; bool flag=0; while(c<'0'||c>'9'){ c=getchar(); if(c=='-'){ flag=1; } } T a=0; while(isdigit(c)){ a=a*10+(c-'0'); c=getchar(); } if(flag){ a=-a; } return a; } template<class T> void print(T a){ if(a<0){ putchar('-'); a=-a; } if(a>9){ print(a/10); } putchar((char)((a%10)+'0')); } template<class T> void v_clear(vector<T>& ve){ vector<T>no; swap(ve,no); } template<class T> void us_clear(u_st<T>& ve){ u_st<T>no; swap(ve,no); } template<class T,class T1> void um_clear(u_mp<T,T1>& ve){ u_mp<T,T1>no; swap(ve,no); } template<class T,class T1,class T2> T qmax(T1 a,T2 b){ return (a>b?a:b); } template<class T,class T1,class T2> T qmin(T1 a,T2 b){ return (a<b?a:b); } u_st<int>st; int main(){ fastrd int a,b; cin>>a>>b; int ans=0; for(int i=a;i<=b;i++){ int t=i; int le=floor(log(i)/log(10)); us_clear(st); bool f=1; while(t){ st.insert(t%10); if(t%10>le){ f=0; break; } t/=10; } if(f&&st.size()==le+1){ //cerr<<i<<endl; ans++; } } cout<<ans; return 0; }