n, k = map(int, input().split()) if k == 1: if n == 1: print(0) else: part1 = (2 ** (n - 2) - 1) if (n >= 2) else 0 part2 = 0 m = n - 2 # number of elements from 3 to n if m > 0: possible = set(range(3, n + 1)) for mask in range(1, 1 << m): # exclude empty subset elements = [] for i in range(m): if (mask >> i) & 1: elements.append(3 + i) s_set = set(elements) remaining = possible - s_set if remaining: x = min(remaining) else: x = n + 1 # larger than any possible max_sd max_sd = max(elements) if max_sd > x: part2 += 1 print(part1 + part2) else: if k > n: print(0) else: ans = 1 << (n - k) print(ans)