#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007LL;
int T, K;
long long dp[1100][1100];
long long fun(int n, int m) {
  if (n == 0) {
    if (m == 0) return 1;
    return 0;
  }
  if (dp[n][m] != -1) return dp[n][m];
  long long res = (2 * fun(n - 1, (m <= K ? 0 : 1))) % MOD;
  res = (res + 8 * fun(n - 1, (1 <= m and m <= K ? m + 1 : m))) % MOD;
  return dp[n][m] = res;
}
long long funless(string s) {
  int n = s.size(), m = K + 1;
  long long res = 0;
  for (int i = 0; i < n; ++i) {
    for (char j = '0'; j < s[i]; ++j) {
      int aux = m;
      if (j == '4' or j == '7') {
        if (m <= K)
          aux = 0;
        else
          aux = 1;
      } else {
        if (1 <= m and m <= K) ++aux;
      }
      res = (res + fun(n - i - 1, aux)) % MOD;
    }
    if (s[i] == '4' or s[i] == '7') {
      if (m <= K)
        m = 0;
      else
        m = 1;
    } else {
      if (1 <= m and m <= K) ++m;
    }
  }
  return res;
}
string sumaun(string s) {
  int n = s.size(), p = 1;
  for (int i = n - 1; i >= 0; --i) {
    int x = s[i] - '0' + p;
    s[i] = '0' + x % 10;
    p = x / 10;
  }
  if (p) s = string(1, '0' + p) + s;
  return s;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> T >> K;
  for (int i = 0; i < T; ++i) {
    string a, b;
    cin >> a >> b;
    b = sumaun(b);
    long long ra = funless(a);
    long long rb = funless(b);
    cout << (rb - ra + MOD) % MOD << endl;
  }
}
