#include <iostream>
#include <vector>
using namespace std;
int arr[15];
int n;
vector <long long> v;
void push47 ()
{
long long s=0;
for (int i=1; i<=n; i++)
{
if (i!=n)
{
s+=arr[i];
s=s*10;
}
else s+=arr[i];
}
v.push_back(s);
}
void sinh47 (int u)
{
if (u==n+1)
{
push47 ();
}
else
{
arr[u]=4;
sinh47 (u+1);
arr[u]=7;
sinh47 (u+1);
}
}
int BSearch (int front, int back, int x)
{
int VT=-1;
while (front<=back)
{
int mid = (front+back)/2;
if (v[mid]>=x)
{
VT=mid;
back=mid-1;
}
else front=mid+1;
}
return VT;
}
int main ()
{
for (int i=1; i<=10; i++)
{
n=i;
sinh47 (1);
}
long long l, r;
cin>>l>>r;
long long v_l = BSearch (0, v.size(), l);
long long v_r = BSearch (0, v.size(), r);
long long LKSUM=0;
if (l==r)
{
LKSUM=v[v_l];
}
else if (v[v_l]==l && v[v_r]==r)
{
LKSUM+=v[v_l];
for (int i=v_l+1; i<=v_r; i++)
{
LKSUM+=((v[i]-v[i-1])*v[i]);
}
}
else if (v[v_l]==l && v[v_r]>r)
{
LKSUM+=v[v_l];
for (int i=v_l+1; i<=v_r-1; i++)
{
LKSUM+=((v[i]-v[i-1])*v[i]);
}
LKSUM+=((r-v[v_r-1])*v[v_r]);
}
else if (v[v_l]>l && v[v_l]<=r && v[v_r]==r)
{
LKSUM+=((v[v_l]-l+1)*v[v_l]);
for (int i=v_l+1; i<=v_r; i++)
{
LKSUM+=((v[i]-v[i-1])*v[i]);
}
}
else if (v[v_l]>l && v[v_l]<=r && v[v_r]>r)
{
LKSUM+=((v[v_l]-l+1)*v[v_l]);
for (int i=v_l+1; i<=v_r-1; i++)
{
LKSUM+=((v[i]-v[i-1])*v[i]);
}
LKSUM+=((r-v[v_r-1])*v[v_r]);
}
else if (v[v_l]>r)
{
LKSUM+=((r-l+1)*v[v_l]);
}
cout<<LKSUM;
return 0;
}