#include <iostream>
#include <algorithm>

using namespace std;
int n, s, dp[10][10], cnt;

void makeDp()
{
  for(int i = 0; i < 10; i++)
    for(int j = i; j < 10; j++)
      dp[i][j] = dp[j][i] = i*j;

  return ;
}

void dfs(int t, int r, bool used[10])
{
  if(r == 0){
    if(t > n || (used[0] && t == n)) cnt++;
    return ;
  } else if(r < 0 || t > n) return ;

  for(int i = 9; i >= 0; i--)
    if(used[i]){
      used[i] = false;
      dfs(t+1, r-dp[t][i], used);
      used[i] = true;
    }

  return ;
}

int main()
{
  bool used[10];
  makeDp();
  while(cin>>n>>s){
    cnt = 0;
    fill(used, used+10, true);
    dfs(1, s, used);
    cout << cnt << endl;
  }

  return 0;
}