#include <bits/stdc++.h>
using namespace std;
const long long mo = 1e9 + 7;
long long t, k, a[1005], len, ans, dp[1005][1005][2];
char l[1005], r[1005];
int dfs(int pos, int d, bool flag, bool lim) {
  if (!pos) return flag;
  int res = 0, up = lim ? a[pos] : 9;
  if (!lim && dp[pos][d][flag] >= 0) return dp[pos][d][flag];
  for (int i = 0; i <= up; i++)
    if (i != 4 && i != 7)
      (res += dfs(pos - 1, max(d - 1, 0), flag, lim && i == up)) %= mo;
    else
      (res += dfs(pos - 1, k, flag || d, lim && i == up)) %= mo;
  if (!lim) dp[pos][d][flag] = res;
  return res;
}
bool check() {
  int las = 2001;
  for (int i = len; i > 0; i--)
    if (a[i] == 4 || a[i] == 7) {
      if (las - i <= k) return true;
      las = i;
    }
  return false;
}
signed main() {
  memset(dp, -1, sizeof(dp));
  scanf("%lld %lld", &t, &k);
  while (t--) {
    scanf("%s %s", l, r);
    len = (int)strlen(l);
    for (int i = 0; i < len; i++) a[len - i] = l[i] - '0';
    ans = (dfs(len, 0, 0, 1) - check() + mo) % mo;
    len = (int)strlen(r);
    for (int i = 0; i < len; i++) a[len - i] = r[i] - '0';
    ans = (dfs(len, 0, 0, 1) - ans + mo) % mo;
    printf("%lld\n", ans);
  }
  return 0;
}
