#include <bits/stdc++.h>
using namespace std;
long long const mod = 1000000007;
long long b[1010];
long long n, m, T, k, w, ans;
char l[1050], r[1050];
long long dp[1010][1010][2];
long long dfs(long long o, long long p, bool fl1, bool fl2) {
  long long &now = dp[o][p][fl1];
  if ((fl2 == 0) && now != -1) return now;
  if (o == 0) return fl1;
  long long ma = (fl2) ? b[o] : 9;
  long long res = 0;
  for (int i = 0; i <= ma; ++i) {
    if (i != 4 && i != 7) {
      res = (res + dfs(o - 1, max(0LL, p - 1), fl1, fl2 && (i == ma))) % mod;
    } else {
      res = (res + dfs(o - 1, k, fl1 || p, fl2 && (i == ma))) % mod;
    }
  }
  if (!fl2) now = res;
  return res;
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%I64d%I64d", &T, &k);
  while (T--) {
    scanf("%s%s", &l, &r);
    w = strlen(r);
    for (int i = w; i; --i) b[i] = r[w - i] - '0';
    ans = dfs(w, 0, 0, 1);
    w = strlen(l);
    for (int i = w; i; --i) b[i] = l[w - i] - '0';
    b[1]--;
    for (int i = 1; b[i] < 0; ++i) {
      b[i] += 10;
      b[i + 1]--;
    }
    if (b[w] == 0) w--;
    ans = (ans + (mod - dfs(w, 0, 0, 1)) % mod) % mod;
    printf("%I64d\n", ans);
  }
  return 0;
}
