#include <bits/stdc++.h>
using namespace std;
string a, b;
int t, k;
int n;
long long dp[1005][2][2][2][1005];
long long mod = 1000000007;
long long fun(int pos, int boro, int choto, int suru, int cnt, int prev) {
  if (pos == 1001) {
    return cnt;
  }
  int lw = 0, hi = 9;
  if (boro == 0) lw = a[pos] - '0';
  if (choto == 0) hi = b[pos] - '0';
  long long ret = 0;
  if (dp[pos][boro][choto][cnt][prev] != -1 && boro && choto)
    return dp[pos][boro][choto][cnt][prev];
  for (int i = lw; i <= hi; i++) {
    if (cnt) {
      ret += fun(pos + 1, boro | (i > lw), choto | (i < hi), suru, cnt, prev);
      ret %= mod;
    } else if (i == 4 || (i == 7)) {
      if (suru == 0) {
        ret += fun(pos + 1, boro | (i > lw), choto | (i < hi),
                   suru | (i == 4 || i == 7), cnt, pos);
        ret %= mod;
      } else {
        if (abs(prev - pos) <= k) {
          ret += fun(pos + 1, boro | (i > lw), choto | (i < hi),
                     suru | (i == 4 || i == 7), 1, pos);
          ret %= mod;
        } else {
          ret += fun(pos + 1, boro | (i > lw), choto | (i < hi),
                     suru | (i == 4 || i == 7), cnt, pos);
          ret %= mod;
        }
      }
    } else {
      ret += fun(pos + 1, boro | (i > lw), choto | (i < hi),
                 suru | (i == 4 || i == 7), cnt, prev);
      ret %= mod;
    }
  }
  return dp[pos][boro][choto][cnt][prev] = ret % mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  while (cin >> t >> k) {
    memset(dp, -1, sizeof dp);
    for (int i = 1; i <= t; i++) {
      cin >> a >> b;
      int x = 1001 - a.size();
      string tmp;
      for (int i = 0; i < x; i++) {
        tmp += '0';
      }
      tmp += a;
      a = tmp;
      tmp.clear();
      x = 1001 - b.size();
      for (int i = 0; i < x; i++) {
        tmp.push_back('0');
      }
      tmp += b;
      b = tmp;
      long long ans = fun(0, 0, 0, 0, 0, 0);
      cout << ans << endl;
    }
  }
  return 0;
}
