output_description: Print the number of the triples of X, Y and Z that satisfy the condition.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      K S
attempt: from heapq import heappush, heappop, heapify
  from collections import deque, defaultdict, Counter
  import itertools
  from itertools import permutations, combinations, groupby
  import sys
  import bisect
  import string
  import math
  import time
  import random
  
  
  def S_():
      return input()
  
  
  def LS():
      return [i for i in input().split()]
  
  
  def I():
      return int(input())
  
  
  def MI():
      return map(int, input().split())
  
  
  def LI():
      return [int(i) for i in input().split()]
  
  
  def LI_():
      return [int(i) - 1 for i in input().split()]
  
  
  def NI(n):
      return [int(input()) for i in range(n)]
  
  
  def NI_(n):
      return [int(input()) - 1 for i in range(n)]
  
  
  def StoI():
      return [ord(i) - 97 for i in input()]
  
  
  def ItoS(nn):
      return chr(nn + 97)
  
  
  def LtoS(ls):
      return "".join([chr(i + 97) for i in ls])
  
  
  def GI(V, E, Directed=False, index=0):
      org_inp = []
      g = [[] for i in range(n)]
      for i in range(E):
          inp = LI()
          org_inp.append(inp)
          if index == 0:
              inp[0] -= 1
              inp[1] -= 1
          if len(inp) == 2:
              a, b = inp
              g[a].append(b)
              if not Directed:
                  g[b].append(a)
          elif len(inp) == 3:
              a, b, c = inp
              aa = (inp[0], inp[2])
              bb = (inp[1], inp[2])
              g[a].append(bb)
              if not Directed:
                  g[b].append(aa)
      return g, org_inp
  
  
  def GGI(h, w, search=None, replacement_of_found=".", mp_def={"#": 1, ".": 0}):
      # h,w,g,sg=GGI(h,w,search=['S','G'],replacement_of_found='.',mp_def={'#':1,'.':0}) # sample usage
      mp = [1] * (w + 2)
      found = {}
      for i in range(h):
          s = input()
          for char in search:
              if char in s:
                  found[char] = (i + 1) * (w + 2) + s.index(char) + 1
                  mp_def[char] = mp_def[replacement_of_found]
          mp += [1] + [mp_def[j] for j in s] + [1]
      mp += [1] * (w + 2)
      return h + 2, w + 2, mp, found
  
  
  def bit_combination(k, n=2):
      rt = []
      for tb in range(n**k):
          s = [tb // (n**bt) % n for bt in range(k)]
          rt += [s]
      return rt
  
  
  def show(*inp, end="\n"):
      if show_flg:
          print(*inp, end=end)
  
  
  YN = ["Yes", "No"]
  mo = 10**9 + 7
  inf = float("inf")
  l_alp = string.ascii_lowercase
  u_alp = string.ascii_uppercase
  ts = time.time()
  sys.setrecursionlimit(10**7)
  input = lambda: sys.stdin.readline().rstrip()
  
  
  def ran_input():
      import random
  
      n = random.randint(4, 16)
      rmin, rmax = 1, 10
      a = [random.randint(rmin, rmax) for _ in range(n)]
      return n, a
  
  
  show_flg = False
  show_flg = True
  
  ans = 0
  k, s = LI()
  for x in range(k + 1):
      for y in range(k + 1):
          if 0 <= s - x - y <= k:
              ans += 1
  
  print(ans)
  
problem_description: Statement
  
  You are given two integers K and S.  
  Three variable X, Y and Z takes integer values satisfying 0≤X,Y,Z≤K.  
  How many different assignments of values to X, Y and Z are there such that X +
  Y + Z = S?
samples: [{"input": "2 2", "output": "6\n    \n\nThere are six triples of X, Y and Z that satisfy the condition:\n\n  * X = 0, Y = 0, Z = 2\n  * X = 0, Y = 2, Z = 0\n  * X = 2, Y = 0, Z = 0\n  * X = 0, Y = 1, Z = 1\n  * X = 1, Y = 0, Z = 1\n  * X = 1, Y = 1, Z = 0\n\n* * *"}, {"input": "5 15", "output": "1\n    \n\nThe maximum value of X + Y + Z is 15, achieved by one triple of X, Y and Z."}]