#include <bits/stdc++.h>
using namespace std;
int dp[1010][1010][2];
int k;
string s;
int solve(int n, int last, int flag) {
  if (n == 1010) {
    if (flag)
      return 1;
    else
      return 0;
  }
  if (dp[n][last][flag] != -1) return dp[n][last][flag];
  dp[n][last][flag] = 0;
  dp[n][last][flag] = 8LL * solve(n + 1, last, flag) % 1000000007;
  if (last > 0 and n - (last - 1) <= k) {
    dp[n][last][flag] =
        (1LL * dp[n][last][flag] + 2LL * solve(n + 1, n + 1, 1)) % 1000000007;
  } else
    dp[n][last][flag] =
        (1LL * dp[n][last][flag] + 2LL * solve(n + 1, n + 1, flag)) %
        1000000007;
  return dp[n][last][flag];
}
int cal() {
  int res = 0;
  int last = 0;
  int flag = 0;
  for (int i = 0; i < 1010; i++) {
    for (int j = 0; j < s[i] - '0'; j++) {
      if (j == 4 or j == 7) {
        if (last != 0 and i - (last - 1) <= k)
          res = (1LL * res + solve(i + 1, i + 1, 1)) % 1000000007;
        else
          res = (1LL * res + solve(i + 1, i + 1, flag)) % 1000000007;
      } else {
        res = (1LL * res + solve(i + 1, last, flag)) % 1000000007;
      }
    }
    if (s[i] == '7' or s[i] == '4') {
      if (last != 0 and i - (last - 1) <= k) flag = 1;
      last = i + 1;
    }
  }
  if (flag) res = (res + 1) % 1000000007;
  return res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t;
  cin >> t >> k;
  memset(dp, -1, sizeof(dp));
  while (t--) {
    string a, b;
    cin >> a >> b;
    int extra = 0;
    int last = 0;
    for (int i = 0; i < (int)a.size(); i++) {
      if (a[i] == '7' or a[i] == '4') {
        if (last != 0 and i - (last - 1) <= k) extra = 1;
        last = i + 1;
      }
    }
    while (a.size() < 1010) a = '0' + a;
    while (b.size() < 1010) b = '0' + b;
    s = b;
    int maior = cal();
    s = a;
    int menor = cal();
    int resultado = (maior - menor) % 1000000007;
    if (resultado < 0) resultado += 1000000007;
    cout << (resultado + extra) % 1000000007 << endl;
  }
}
