#include <bits/stdc++.h>
using namespace std;
long long a, b, cnt[120], ans;
string n, m, str;
vector<int> v1, v2;
inline string mabna(int N) {
  if (N == 0) return "0";
  string s;
  while (N > 0) {
    s += (char)((N % 7) + '0');
    N /= 7;
  }
  reverse(s.begin(), s.end());
  return s;
}
bool chk() {
  for (int l = 0; l < 100; l++)
    if (cnt[l] > 1) return false;
  return true;
}
int main() {
  cin >> a >> b;
  n = mabna(a - 1), m = mabna(b - 1);
  if (n.size() + m.size() > 7) return cout << 0, 0;
  for (int i = 0; i < a; i++) {
    memset(cnt, 0, sizeof(cnt));
    str = mabna(i);
    for (int j = 0; j < str.size(); j++) cnt[str[j] - '0']++;
    for (int j = 0; j < n.size() - str.size(); j++) cnt[0]++;
    if (chk()) v1.push_back(i);
  }
  for (int i = 0; i < b; i++) {
    memset(cnt, 0, sizeof(cnt));
    str = mabna(i);
    for (int j = 0; j < str.size(); j++) cnt[str[j] - '0']++;
    for (int j = 0; j < m.size() - str.size(); j++) cnt[0]++;
    if (chk()) v2.push_back(i);
  }
  for (int i = 0; i < v1.size(); i++) {
    for (int j = 0; j < v2.size(); j++) {
      memset(cnt, 0, sizeof(cnt));
      str = mabna(v1[i]);
      for (int k = 0; k < str.size(); k++) cnt[str[k] - '0']++;
      for (int k = 0; k < n.size() - str.size(); k++) cnt[0]++;
      str = mabna(v2[j]);
      for (int k = 0; k < str.size(); k++) cnt[str[k] - '0']++;
      for (int k = 0; k < m.size() - str.size(); k++) cnt[0]++;
      if (chk()) ans++;
    }
  }
  cout << ans << '\n';
}
