#include <iostream>
#include <math.h>
#include <stdint.h>
#define maxim 50001
using namespace std;
int32_t nrq, frecv[maxim+1], sol[maxim], maxi, sqrtm;
int32_t rr[maxim], l, r, l_c, r_c, rez;
struct queryy
{
    int32_t a, b, sol, in;
}q[maxim], aux;
int16_t numar(int32_t nr, int16_t cif)
{
    int32_t aux=nr;
    int16_t rez=0;
    while(aux!=0)
    {
        if(aux%10==cif) rez++;
        aux/=10;
    }
    return rez;
}
void frecventa()
{
    int32_t i, nr4, nr7;
    for(i=1; i<maxim; i++)
    {
        nr4=numar(i, 4);
        nr7=numar(i, 7);
        frecv[i]=frecv[i-1]+ nr4-nr7;
    }
}
void query()
{
    int32_t i, gap, j;
    ios_base::sync_with_stdio(false);
    cin>>nrq;
    for(i=1; i<=nrq; i++)
    {
        cin>>q[i].a>>q[i].b;
        if(maxi< q[i].b) maxi= q[i].b;
        q[i].in=i;
    }
    sqrtm= sqrt(maxi);

    for(gap=nrq/2; gap>=1; gap/=2)
        for(i=1+gap; i<=nrq; i++)
    {
        aux=q[i];
        for(j=i-gap; (j>=1)&&((q[j].a/ sqrtm> aux.a/ sqrtm)||((q[j].a/ sqrtm== aux.a/ sqrtm)&&(q[j].b> aux.b))); j-=gap)
            q[j+gap]=q[j];
        q[j+gap]=aux;
    }
}
void afisare()
{
    int32_t i;
    for(i=1; i<=nrq; i++)
        sol[q[i].in]=q[i].sol;
    for(i=1; i<=nrq; i++)
        cout<<sol[i]<<"\n";
}
void add_dr(int32_t poz)
{
    rez+=rr[frecv[poz]];
    rr[frecv[poz]]++;
}
void delete_dr(int32_t poz)
{
    rr[frecv[poz]]--;
    rez-=rr[frecv[poz]];
}

void add_st(int32_t poz)
{
    rez+=rr[frecv[poz-1]];
     rr[frecv[poz]]++;
}
void delete_st(int32_t poz)
{
    rr[frecv[poz]]--;
    rez-=rr[frecv[poz-1]];
}
void actualizare()
{
    int32_t i;
    if(r_c< r)
       for(i=r; i>r_c; i--)
           delete_dr(i);
    else
       for(i=r+1; i<=r_c; i++)
           add_dr(i);
    if(l_c< l)
        for(i=l_c; i<l; i++)
           add_st(i);
    else
       for(i=l; i<l_c; i++)
           delete_st(i);
    l=l_c;
    r=r_c;
}
void mo()
{
    int32_t i;
    l=1;
    r=1;
    rr[0]=2;
    rez=1;
    //rr[x]= nr el cu frecv= x din intervalul l, r
    //rez= nr subintervale speciale din l,r
    for(i=1; i<=nrq; i++)
        {
            l_c=q[i].a;
            r_c=q[i].b;
            actualizare();
            q[i].sol=rez;
        }
}
int main()
{
    frecventa();
    query();
    mo();
    afisare();
    return 0;
}