#include <bits/stdc++.h>
using namespace std;
long long a, b, p, q, ay, by, tx, g, l, ty, x, y, n = 15, d, m, tot, last, lst2;
map<int, int> wow;
long long shob[104];
vector<int> all;
char c;
int setbit(int n, int pos) { return n | (1 << (pos)); }
int isbit(int n, int pos) { return n & (1 << (pos)); }
int how(int a, long long &x) {
  int ret = 0, boom = 1, wow = 0;
  while (a > 0) {
    ret++;
    int md = a % 7;
    wow = boom * md + wow;
    boom *= 10;
    a /= 7;
  }
  x = wow;
  return ret;
}
int Bboom(int n, int len, int mask, int A) {
  if (len > b) {
    return 0;
  }
  int now = n, ans = 0;
  for (int i = 0; i < 7; i++) {
    if (isbit(mask, i) == 0) {
      now = n * 10 + i;
      if (len == b && now <= y) {
        ans++;
      } else if (len < b && now <= y && isbit(mask, i) == 0) {
        ans += Bboom(now, len + 1, setbit(mask, i), A);
      }
    }
  }
  return ans;
}
int Aboom(int n, int len, int mask) {
  if (len > a) {
    return 0;
  }
  int now = n, ans = 0;
  for (int i = 0; i < 7; i++) {
    if (isbit(mask, i) == 0) {
      now = n * 10 + i;
      if (len == a && now <= x) {
        ans += Bboom(0, 1, setbit(mask, i), now);
      } else if (len < a && now <= x) {
        ans += Aboom(now, len + 1, setbit(mask, i));
      }
    }
  }
  return ans;
}
int main() {
  cin >> n >> m;
  n--;
  m--;
  a = max(how(n, x), 1);
  b = max(how(m, y), 1);
  if (a + b > 7) {
    cout << 0 << endl;
  } else {
    n = a + b;
    p = x;
    q = y;
    cout << Aboom(0, 1, 0);
  }
}
