import java.util.*;
public class Main {
List<StringBuilder> f(int N){
List<StringBuilder> str = new ArrayList<>();//存储穷举的运算符序列
if(N == 1){
str.add(new StringBuilder("+"));
str.add(new StringBuilder("-"));
str.add(new StringBuilder("g"));//用g代表不插入运算符
return str;
}
for(StringBuilder i : f(N - 1)){
str.add(new StringBuilder("+").append(i));
str.add(new StringBuilder("-").append(i));
str.add(new StringBuilder("g").append(i));
}
return str;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int r = 0;
if(N == 1){
if(M == 1) System.out.println(1);
else System.out.println(0);
System.exit(0);
}
List<Integer> v = new ArrayList<>();
for(int i = 1; i <= N; ++i) v.add(i);
List<StringBuilder> str = new Main().f(N - 1);
for(StringBuilder s : str){//计算每一个穷举运算符序列的结果
List<Integer> temp = new ArrayList<>();
temp.add(v.get(0));
int j = 0;
for(int i = 0; i < s.length(); ++i){
if(s.charAt(i) == 'g'){//把g相连的数字合成一个数字
temp.set(j, temp.get(j)*10 + v.get(i + 1));
}else{
j++;
temp.add(v.get(i + 1));
}
}
int sum = temp.get(0);
for(int i = 0; i < s.length(); ++i){//剔除当前运算符序列中的g符号
if(s.charAt(i) == 'g'){
s.deleteCharAt(i);
--i;
}
}
for(int i = 1; i < temp.size(); ++i){//剩下的只有+-符号
if(s.charAt(i - 1) == '+') sum += temp.get(i);
else sum -= temp.get(i);
}
if(sum == M) r++;
}
System.out.println(r);
}
}