#pragma comment(linker, "/STACK:102400000,102400000")
#include <set>
#include <bitset>
#include <list>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <string>
#include <vector>
#include <ios>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <algorithm>
#include <utility>
#include <complex>
#include <numeric>
#include <functional>
#include <cmath>
#include <ctime>
#include <climits>
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cassert>
using namespace std;
#define CFF freopen ("aaa.txt", "r", stdin)
#define CPPFF ifstream cin ("aaa.txt")
#define LL long long
#define ULL unsigned long long
#define DB(ccc) cout << #ccc << " = " << ccc << endl
const int INF = 0x7FFFFFFF;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = 2 * acos (0.0);
const int maxn = 1e6 + 6;
LL dp[16][666][100], sta[666][2];
LL n, m;
LL PP (LL val)
{
LL res = 0;
while (val > 0)
{
if ((val & 1) == 1) res++;
val >>= 1;
}
return res;
}
int main()
{
// CFF;
scanf ("%lld%lld", &n, &m);
LL len = (1 << n) - 1, llen = 0;
memset (dp, 0, sizeof (dp));
for (LL i = 0; i <= len; i++)
if ((i & (i >> 1)) == 0)
{
LL tt = PP (i);
if (tt <= m)
{
sta[llen][0] = i;
sta[llen][1] = tt;
llen++;
}
}
for (LL i = 0; i < llen; i++)
dp[1][sta[i][0]][sta[i][1]] = 1;
for (LL i = 2; i <= n; i++)
for (LL k = 0; k <= m; k++)
for (LL j = 0; j < llen; j++)
for (LL q = 0; q < llen; q++)
if ((sta[j][0] & sta[q][0]) == 0 && ((sta[q][0] << 1) & sta[j][0]) == 0
&& ((sta[q][0] >> 1) & sta[j][0]) == 0 && k >= sta[j][1])
dp[i][sta[j][0]][k] += dp[i-1][sta[q][0]][k-sta[j][1]];
LL res = 0;
for (LL i = 0; i < llen; i++)
res += dp[n][sta[i][0]][m];
printf ("%lld\n", res);
return 0;
}