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);
    }
}