#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long t, k;
long long bit[1020];
long long dp[1020][1020][2];
long long dfs(int pos, int pre, int sta, bool limit) {
  if (pos == 0) {
    if (sta) return 1;
    return 0;
  }
  if (!limit && dp[pos][pre][sta] != -1) return dp[pos][pre][sta];
  int up = limit ? bit[pos] : 9;
  long long tmp = 0;
  for (int i = 0; i <= up; i++) {
    if (i == 4 || i == 7)
      tmp +=
          dfs(pos - 1, pos, (pre && (pre - pos) <= k) | sta, limit && i == up);
    else
      tmp += dfs(pos - 1, pre, sta, limit && i == up);
    tmp %= mod;
  }
  if (!limit) dp[pos][pre][sta] = tmp;
  return tmp;
}
long long cal(string s) {
  int pos = 0;
  for (int i = s.length() - 1; i >= 0; i--) {
    bit[++pos] = s[i] - '0';
  }
  return dfs(pos, 0, 0, 1);
}
bool check(string s) {
  int pre = 0;
  for (int i = 1; i <= s.length(); i++) {
    if (s[i - 1] == '4' || s[i - 1] == '7') {
      if (!pre || i - pre > k)
        pre = i;
      else if (i - pre <= k)
        return true;
    }
  }
  return false;
}
int main() {
  ios::sync_with_stdio(0);
  string l, r;
  cin >> t >> k;
  memset(dp, -1, sizeof dp);
  while (t--) {
    cin >> l;
    cin >> r;
    long long ans = cal(r) - cal(l) + (check(l) ? 1 : 0);
    ans = (ans % mod + mod) % mod;
    cout << ans << endl;
  }
  return 0;
}
