#include <bits/stdc++.h>
using namespace std;
const double PI =
    3.14159265358979323846264338327950288419716939937510582097494459230;
void swaps(char *x, char *y) {
  char temp;
  temp = *x;
  *x = *y;
  *y = temp;
}
void swapi(int *a, int *b) {
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}
unsigned long long gcd(unsigned long long a, unsigned long long b) {
  if (a == 0) return b;
  if (b == 0) return a;
  if (a == 1 || b == 1) return 1;
  if (a == b) return a;
  if (a > b)
    return gcd(b, a % b);
  else
    return gcd(a, b % a);
}
void preprocess() {}
void refresh() {}
void compute() {}
int dig(int k) {
  if (k < 7) return 1;
  return 1 + dig(k / 7);
}
int check(int i, int j, int a, int b) {
  int bit = 0;
  while (a != 0) {
    a--;
    if (1 & bit >> (i % 7)) {
      return 0;
    }
    bit = bit | (1 << (i % 7));
    i /= 7;
  }
  while (b != 0) {
    b--;
    int temp = bit & (1 << (j % 7));
    if (1 & bit >> (j % 7)) {
      return 0;
    }
    bit = bit | (1 << (j % 7));
    j /= 7;
  }
  return 1;
}
int main() {
  int n, m;
  cin >> n >> m;
  int a = dig(n - 1);
  int b = dig(m - 1);
  int ans = 0;
  if (a + b <= 7) {
    int i, j;
    for (i = 0; i < n; i++)
      for (j = 0; j < m; j++) {
        int t = check(i, j, a, b);
        ans += t;
      }
  }
  printf("%d", ans);
  return 0;
}
