#include <bits/stdc++.h>
using namespace std;
int i,j,ja,jb,xa,xb,c,e,mn,mx,n,cnt,q,a[50050],b[50050],ka[50050],kb[50050],was[50050],f[50050][1112],cur[1112];
map<int,vector<int>> w;
long long r;
long long fm(long long x) { return (x*(x-1))/2; }
bool cmpa(int i, int j) { return a[i]<a[j]; }
bool cmpb(int i, int j) { return b[i]<b[j]; }
int main() {
  scanf("%d",&q);
  for (i=0; i<q; i++) {
    scanf("%d%d",&a[i],&b[i]);
    a[i]-=2;
    ka[i]=i;
    kb[i]=i;
  }
  sort(ka,ka+q,cmpa);
  sort(kb,kb+q,cmpb);
  for (; ja<q && a[ka[ja]]==-1; ja++);
  cur[0]=1;
  for (; ja<q && a[ka[ja]]==0; ja++) f[ka[ja]][0]--;
  for (i=1; i<=50000; i++) {
    for (j=i; j>0; j/=10) {
      if (j%10==4) c++;
      if (j%10==7) c--;
    }
    if (c>1111) {
      if (was[c]) {
        if (w.count(c)==0) w[c].push_back(was[c]);
        w[c].push_back(i);
      } else was[c]=i;
    } else {
      cur[c]++;
      if (c>mx) mx=c;
    }
    for (; ja<q && a[ka[ja]]<=i; ja++) {
      xa=ka[ja];
      for (e=0; e<=mx; e++) f[xa][e]-=cur[e];
    }
    for (; jb<q && b[kb[jb]]<=i; jb++) {
      xb=kb[jb];
      for (e=0; e<=mx; e++) f[xb][e]+=cur[e];
    }
  }
  for (i=0; i<q; i++) {
    for (r=e=0; e<=mx; e++) if (f[i][e]>1) r+=fm(f[i][e]);
    for (auto it=w.begin(); it!=w.end(); it++) {
      const vector<int>& v=it->second;
      if (v[0]<=b[i] && v.back()>a[i]) {
        for (cnt=j=0; j<v.size(); j++) if (v[j]>a[i]) {
          if (v[j]<=b[i]) cnt++; else break;
        }
        r+=fm(cnt);
      }
    }
    printf("%lld\n",r);
  }
  return 0;
}