#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int N = 1010;
int dp[N][N][2];
int bits[N];
int t, k;
long long dfs(int len, int pos, int num, bool mark) {
  int maxx;
  long long sum;
  if (!len) {
    if (num == 1) {
      return true;
    } else {
      return false;
    }
  }
  if (!mark && dp[len][pos][num] != -1) {
    return dp[len][pos][num];
  }
  if (mark) {
    maxx = bits[len];
  } else {
    maxx = 9;
  }
  sum = 0;
  for (int i = 0; i <= maxx; i++) {
    if (i == 4 || i == 7) {
      sum +=
          dfs(len - 1, len, (pos && pos - len <= k) | num, mark && i == maxx);
    } else {
      sum += dfs(len - 1, pos, num, mark && i == maxx);
    }
  }
  sum %= MOD;
  if (!mark) {
    dp[len][pos][num] = sum;
  }
  return sum;
}
long long f(string s) {
  int len;
  len = 0;
  for (int i = s.size() - 1; i >= 0; i--) {
    len++;
    bits[len] = s[i] - '0';
  }
  return dfs(len, 0, 0, 1);
}
bool check(string &s) {
  int p;
  p = 0;
  for (int i = 1; i <= s.size(); i++) {
    if (s[i - 1] == '4' || s[i - 1] == '7') {
      if (!p || i - p > k) {
        p = i;
      } else if (i - p <= k) {
        return true;
      }
    }
  }
  return false;
}
int main() {
  string l, r;
  long long ans;
  while (scanf("%d%d", &t, &k) == 2) {
    memset(dp, -1, sizeof(dp));
    for (int i = 0; i < t; i++) {
      cin >> l >> r;
      ans = f(r) - f(l) + (check(l) ? 1 : 0);
      printf("%lld\n", (ans % MOD + MOD) % MOD);
    }
  }
  return 0;
}
