#include <bits/stdc++.h>
using namespace std;
long long dp[2200][2200][3];
long long mod = 1000000007;
int vis[2200][2200][3];
int True;
int K;
int N;
char str1[2200];
long long back(int pos, int last, int p) {
  if (pos == 0) {
    return p;
  }
  if (vis[pos][last][p] == True) return dp[pos][last][p];
  vis[pos][last][p] = True;
  dp[pos][last][p] = 0;
  for (int i = 0; i <= 9; i++) {
    if (i == 4 || i == 7) {
      if (last <= K)
        dp[pos][last][p] = (dp[pos][last][p] + back(pos - 1, 1, 1)) % mod;
      else
        dp[pos][last][p] = (dp[pos][last][p] + back(pos - 1, 1, p)) % mod;
    } else
      dp[pos][last][p] = (dp[pos][last][p] + back(pos - 1, last + 1, p)) % mod;
  }
  return dp[pos][last][p];
}
bool fl;
long long calc() {
  long long ans = 0;
  int last = K + 1;
  int n = strlen(str1);
  int p = 0;
  for (int i = 0; i < n; i++) {
    for (int j = '0'; j < str1[i]; j++) {
      if (j == '4' || j == '7') {
        if (last <= K)
          ans = (ans + back(n - i - 1, 1, 1)) % mod;
        else
          ans = (ans + back(n - i - 1, 1, p)) % mod;
      } else {
        ans = (ans + back(n - i - 1, last + 1, p)) % mod;
      }
    }
    if (str1[i] == '4' || str1[i] == '7') {
      if (last <= K) p = 1;
      last = 1;
    } else
      last++;
  }
  if (p) fl = true;
  return ans;
}
char str3[1200];
char str4[1200];
int main() {
  int t;
  scanf("%d%d", &t, &K);
  True++;
  while (t--) {
    fl = false;
    scanf("%s%s", &str3, &str4);
    long long ans;
    strcpy(str1, str4);
    ans = calc();
    if (fl) ans++;
    strcpy(str1, str3);
    ans = ans % mod;
    ans = ((ans - calc()) % mod + mod) % mod;
    printf("%I64d\n", ans);
  }
  return 0;
}
