#include <bits/stdc++.h>
using namespace std;
inline long long sqr(long long first) { return first * first; }
bool covered[50000000];
inline long long query(int pos, long long left, long long right,
                       long long first, long long second) {
  if (left == right) return covered[pos];
  if (covered[pos]) return second - first + 1;
  long long mid = (left + right) / 2;
  if (second <= mid)
    return query(pos * 2 + 1, left, mid, first, second);
  else if (first > mid)
    return query(pos * 2 + 2, mid + 1, right, first, second);
  else
    return query(pos * 2 + 1, left, mid, first, mid) +
           query(pos * 2 + 2, mid + 1, right, mid + 1, second);
}
inline void update(int pos, long long left, long long right, long long first,
                   long long second) {
  if (covered[pos]) return;
  if (second < first) return;
  if (left == first && right == second) {
    covered[pos] = 1;
    return;
  }
  long long mid = (left + right) / 2;
  if (second <= mid)
    update(pos * 2 + 1, left, mid, first, second);
  else if (first > mid)
    update(pos * 2 + 2, mid + 1, right, first, second);
  else
    update(pos * 2 + 1, left, mid, first, mid),
        update(pos * 2 + 2, mid + 1, right, mid + 1, second);
  covered[pos] |= covered[pos * 2 + 1] & covered[pos * 2 + 2];
}
int main(int argc, char **argv) {
  long long N, M;
  cin >> N >> M;
  long long res = 0;
  for (long long b = (1); b < (N + 1); ++b) {
    long long h = min(M, b * b);
    long long first = (long long)(ceil(sqrt(b * b - h) - 1e-9)),
              second = (long long)(floor(sqrt(b * b - 1.) + 1e-9));
    int num = max(0LL, second - first + 1), num2 = 0;
    if (!num) {
      res += 2 * h;
      continue;
    }
    res += 2 * (h - num);
    long long Q = query(0, 0, 2 * N, 2 * N - b + first, 2 * N - b + second);
    update(0, 0, 2 * N, 2 * N - b + first, 2 * N - b + second);
    res += max(0LL, (second - first + 1) - Q);
    Q = query(0, 0, 2 * N, 2 * N - b - second, 2 * N - b - first);
    res += max(0LL, (second - first + 1) - Q);
    update(0, 0, 2 * N, 2 * N - b - second, 2 * N - b - first);
  }
  cout << res << endl;
  return 0;
}
