#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; }