#include <bits/stdc++.h>   using namespace std;   const int N = 2e5 + 5;   const long long M = (long long)1e9 + 7;   int Int() {     int x;     scanf( %d , &x);     return x;   }   long long Long() {     long long x;     scanf( %lld , &x);     return x;   }   void Char(char *ch) { scanf( %s , ch); }   template <typename t>   inline t abs(t a) {     if (a >= 0) return a;     return -a;   }   template <typename T>   inline T modpow(T b, T p, T Mod) {     T res = 1;     while (p) {       if (p & 1) {         res *= b;         res %= Mod;       }       b *= b;       b %= Mod;       p >>= 1;     }     return res;   }   template <typename T>   inline T ModInv(T b, T Mod) {     return modpow(b, Mod - 2, Mod);   }   long long pwr(long long b, long long p) {     long long res = 1LL;     while (p) {       if (p & 1) {         res *= b;       }       b *= b;       p >>= 1LL;     }     return res;   }   template <typename T>   inline T gcd(T a, T b) {     if (b == 0) return a;     return gcd(b, a % b);   }   template <typename T>   inline void Int(T &n) {     n = 0;     int f = 1;     register int ch = getchar();     for (; !isdigit(ch); ch = getchar())       if (ch ==  - ) f = -1;     for (; isdigit(ch); ch = getchar()) n = (n << 3) + (n << 1) + ch -  0 ;     n = n * f;   }   template <typename T, typename U>   inline void Int(T &a, U &b) {     Int(a);     Int(b);   }   template <typename T, typename U, typename W>   inline void Int(T &a, U &b, W &c) {     Int(a, b);     Int(c);   }   template <typename T, typename U, typename W, typename X>   inline void Int(T &a, U &b, W &c, X &d) {     Int(a, b, c);     Int(d);   }   vector<int> Unique(vector<int> v) {     sort(v.begin(), v.end());     v.erase(unique(v.begin(), v.end()), v.end());     return v;   }   vector<string> split(const string &s, char c) {     vector<string> v;     stringstream ss(s);     string x;     while (getline(ss, x, c)) v.emplace_back(x);     return move(v);   }   void err(vector<string>::iterator it) {}   template <typename T, typename... Args>   void err(vector<string>::iterator it, T a, Args... args) {     cout << it->substr((*it)[0] ==    , it->length()) <<   =   << a <<    ;     err(++it, args...);   }   int digit(long long n) {     int s = 0;     while (n) {       n /= 10;       s++;     }     return s;   }   long long F(long long n) {     int len = digit(n);     if (len <= 1) return n;     long long res = 0, add = 9;     for (int i = 1; i < len; i++) {       if (i == 1) {         res += 9;       } else {         res += add;         add *= 10;       }     }     long long k = pwr(10, len - 1);     long long x = n / k;     long long y = n % 10LL;     long long p = (n % k) / 10LL;     if (y >= x) {       res += (p + 1) + ((x - 1) * (k / 10LL));     } else {       res += p + ((x - 1) * (k / 10LL));     }     return res;   }   int main() {     long long a = Long(), b = Long();     printf( %lld n , F(b) - F(a - 1));     return 0;   }   