#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
vector<long long> a;
int main() {
  for (int _b = (10), len = (1); len <= _b; len++)
    for (int mask = 0, _n = (1 << len); mask < _n; mask++) {
      long long x = 0;
      for (int i = (len)-1; i >= 0; i--)
        x = x * 10 + ((mask & (1 << i)) ? 7 : 4);
      a.push_back(x);
    }
  sort((a).begin(), (a).end());
  int n, k;
  cin >> n >> k;
  int suflen = min(n, 13);
  long long suffact = 1;
  for (int _b = (suflen), i = (1); i <= _b; i++) suffact *= i;
  if (k > suffact) {
    printf("-1\n");
    return 0;
  }
  vector<int> left;
  for (int i = 0, _n = (suflen); i < _n; i++) left.push_back(i);
  --k;
  long long fact = suffact;
  int res = upper_bound((a).begin(), (a).end(), n - suflen) - a.begin();
  for (int i = 0, _n = (suflen); i < _n; i++) {
    fact /= (suflen - i);
    int ord = k / fact;
    k -= fact * ord;
    int val = left[ord];
    if (binary_search((a).begin(), (a).end(), n - suflen + i + 1) &&
        binary_search((a).begin(), (a).end(), n - suflen + val + 1))
      ++res;
    left.erase(left.begin() + ord);
  }
  printf("%d\n", res);
  return 0;
}
