#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:60777216")
using namespace std;
const int mod = 1000000007;
long long qp(long long c, long long st) {
  long long r = 1;
  while (st) {
    if (st & 1) r *= c, r %= mod;
    c *= c, c %= mod;
    st >>= 1;
  }
  return r;
}
long long q[111111];
long long q1[111111];
long long q2[111111];
long long q3[111111];
long long sum[111111];
long long all4[111111];
long long all7[111111];
string l, r;
struct Res {
  long long total;
  long long num;
  long long sum;
  long long up;
  Res() { total = num = sum = up = 0; }
};
void add(long long &x, long long y) {
  y %= mod;
  if (y < 0) y += mod;
  x += y;
  if (x >= mod) x -= mod;
}
Res solve(string &s, int pos) {
  Res res;
  if (pos >= s.size()) {
    res.num = 1;
    return res;
  }
  int st = s.size() - pos - 1;
  Res t = solve(s, pos + 1);
  if (s[pos] == '4') {
    add(res.total, t.total);
    add(res.num, t.num);
    add(res.total,
        4 * qp(10, st) % mod * 4 % mod * qp(10, st) % mod * (t.num - 1) % mod);
    add(res.total, 4 * qp(10, st) % mod * (t.sum - all4[st]) % mod);
    add(res.total, 4 * qp(10, st) % mod * (t.sum - t.up) % mod);
    add(res.sum, t.sum);
    add(res.sum, 4 * qp(10, st) % mod * t.num % mod);
  }
  if (s[pos] == '7') {
    add(res.num, qp(2, st));
    add(res.num, t.num);
    add(res.sum, sum[st]);
    add(res.sum, 4 * qp(10, st) % mod * qp(2, st) % mod);
    add(res.sum, t.sum);
    add(res.sum, 7 * qp(10, st) % mod * t.num % mod);
    add(res.total, q1[st + 1]);
    add(res.total, q3[st + 1]);
    add(res.total, t.total);
    add(res.total,
        7 * qp(10, st) % mod * 7 % mod * qp(10, st) % mod * (t.num - 1) % mod);
    add(res.total, 7 * qp(10, st) % mod * (t.sum - all4[st]) % mod);
    add(res.total, 7 * qp(10, st) % mod * (t.sum - t.up) % mod);
  }
  add(res.up, t.up);
  add(res.up, (s[pos] - '0') * qp(10, st) % mod);
  return res;
}
int main() {
  q[0] = 0;
  sum[0] = 0;
  for (int i = (1); i < (111111); i++) {
    all4[i] = (all4[i - 1] * 10 + 4) % mod;
    all7[i] = (all7[i - 1] * 10 + 7) % mod;
    sum[i] = sum[i - 1] + 4 * qp(2, i - 1) % mod * qp(10, i - 1) % mod +
             sum[i - 1] + 7 * qp(2, i - 1) % mod * qp(10, i - 1) % mod;
    sum[i] %= mod;
    long long t1 = q[i - 1] +
                   4 * qp(10, i - 1) % mod * (sum[i - 1] - all4[i - 1]) % mod +
                   4 * qp(10, i - 1) % mod * (sum[i - 1] - all7[i - 1]) % mod +
                   4 * 4 * qp(10, i - 1) % mod * qp(10, i - 1) % mod *
                       (qp(2, i - 1) - 1) % mod;
    long long t2 = q[i - 1] +
                   7 * qp(10, i - 1) % mod * (sum[i - 1] - all4[i - 1]) % mod +
                   7 * qp(10, i - 1) % mod * (sum[i - 1] - all7[i - 1]) % mod +
                   7 * 7 * qp(10, i - 1) % mod * qp(10, i - 1) % mod *
                       (qp(2, i - 1) - 1) % mod;
    long long t3 = (4 * qp(10, i - 1) + all7[i - 1]) % mod *
                   ((7 * qp(10, i - 1) + all4[i - 1]) % mod);
    t1 %= mod;
    if (t1 < 0) t1 += mod;
    t2 %= mod;
    if (t2 < 0) t2 += mod;
    t3 %= mod;
    if (t3 < 0) t3 += mod;
    q1[i] = t1 % mod;
    q2[i] = t2 % mod;
    q3[i] = t3 % mod;
    q[i] = (t1 + t2 + t3) % mod;
    if (q[i] < 0) q[i] += mod;
  }
  cin >> l >> r;
  Res res1 = solve(r, 0);
  Res res2 = solve(l, 0);
  long long res = res1.total - res2.total;
  if (res < 0) res += mod;
  cout << res << endl;
  return 0;
}
