#include <bits/stdc++.h>
using namespace std;
string str;
long long int n, k, mod = 1000000007;
long long int dp[2][1005][1005][2];
long long int recur(long long int full, long long int pos, long long int dis,
                    long long int ok) {
  dis = min(1005 - 1ll, dis);
  long long int &res = dp[full][pos][full ? 0 : dis][ok];
  if (res != -1) return res;
  if (pos == 0) return res = ok;
  res = 0;
  if (!full) {
    res = (res + 2 * recur(full, pos - 1, 1, ok | (dis <= k))) % mod;
    res = (res + 8 * recur(full, pos - 1, dis + 1, ok)) % mod;
    return res;
  }
  for (long long int i = 0; i <= str[((long long int)str.size()) - pos] - '0';
       i++) {
    bool flag = (i == str[((long long int)str.size()) - pos] - '0');
    if (i != 4 && i != 7)
      res = (res + recur(flag, pos - 1, dis + 1, ok)) % mod;
    else
      res = (res + recur(flag, pos - 1, 1, ok | (dis <= k))) % mod;
  }
  return res;
}
long long int cal(string s) {
  str = s;
  for (long long int i = 0; i < ((long long int)(1005)); i++)
    for (long long int j = 0; j < ((long long int)(2)); j++)
      dp[1][i][0][j] = -1;
  return recur(1, ((long long int)str.size()), 1005, 0);
}
long long int check(string s) {
  long long int bef = -(1ll << (long long int)(60));
  for (long long int i = 0; i < ((long long int)(((long long int)s.size())));
       i++)
    if (s[i] == '4' || s[i] == '7') {
      if (i - bef <= k) return 1;
      bef = i;
    }
  return 0;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n >> k;
  for (long long int i = 0; i < ((long long int)(n)); i++) {
    string low, high;
    cin >> low >> high;
    cout << ((cal(high) - cal(low) + check(low)) % mod + mod) % mod << endl;
  }
}
