#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
const int mod = 1000000007;
int k;
char l[N], r[N];
long long dp[2][N][N];
long long gao(int s, int d, int len) {
  d = min(d, k + 1);
  if (len == 0) return s;
  if (dp[s][d][len] != -1) return dp[s][d][len];
  long long ans = 0;
  for (int j = 0; j < (int)(10); ++j) {
    if (j == 4 || j == 7)
      ans += gao(s || d <= k, 1, len - 1);
    else
      ans += gao(s, d + 1, len - 1);
    ans %= mod;
  }
  return dp[s][d][len] = ans;
}
long long cal(char a[]) {
  int len = strlen(a);
  int s = 0, d = k + 1;
  long long ans = 0;
  for (int i = 0; i < (int)(len); ++i) {
    for (int j = 0; j < (int)(a[i] - '0'); ++j) {
      if (j == 4 || j == 7)
        ans += gao(s || d <= k, 1, len - 1 - i);
      else
        ans += gao(s, d + 1, len - 1 - i);
      ans %= mod;
    }
    if (a[i] == '4' || a[i] == '7') {
      s = s || d <= k;
      d = 1;
    } else
      d++;
  }
  return ans;
}
bool chk(char a[], int d = k + 1) {
  if (*a == 0) return 0;
  if (*a == '4' || *a == '7')
    return d <= k || chk(a + 1, 1);
  else
    return chk(a + 1, d + 1);
}
void solve() {
  scanf("%s%s", l, r);
  long long ans = cal(r) - cal(l) + chk(r);
  printf(
      "%I64d"
      "\n",
      (ans % mod + mod) % mod);
}
int main() {
  int cas;
  while (scanf("%d%d", &cas, &k) != EOF) {
    memset((dp), (-1), sizeof(dp));
    ;
    while (cas--) solve();
  }
  return 0;
}
