#include <bits/stdc++.h>
using namespace std;
const int N=10;
int n, k, ans;
bool check[N][N], col[N];
int di[8]={-2, -2, -1, 1, 2, 2, -1, 1};
int dj[8]={-1, 1, 2, 2, -1, 1, -2, -2};
bool inside(int i, int j) //hàm kiểm tra ô (i, j) có nằm trong bàn cờ hay không
{
return i>0 && i<=n && j>0 && j<=n;
}
int cnt;
void btrack(int i)
{
if(i>n){
if(cnt==k) ++ans;
return;
}
if(cnt<k){ //trường hợp đặt tại hàng i
for(int j=1;j<=n;++j){
if(col[j] || check[i][j]) continue;
++cnt;
col[j]=1;
for(int x=0;x<8;++x){
int ni=i+di[x], nj=j+dj[x]; //vị trí từ ô (i, j) có thể di tới theo kiểu quân Mã
if(inside(ni, nj)) check[ni][nj]=1;
}
btrack(i+1);
--cnt;
col[j]=0;
for(int x=0;x<8;++x){
int ni=i+di[x], nj=j+dj[x];
if(inside(ni, nj)) check[ni][nj]=0;
}
}
}
btrack(i+1); //trường hợp không đặt tại hàng i
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> k;
btrack(1);
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTj0xMDsKaW50IG4sIGssIGFuczsKYm9vbCBjaGVja1tOXVtOXSwgY29sW05dOwoKaW50IGRpWzhdPXstMiwgLTIsIC0xLCAxLCAyLCAyLCAtMSwgMX07CmludCBkals4XT17LTEsIDEsIDIsIDIsIC0xLCAxLCAtMiwgLTJ9Owpib29sIGluc2lkZShpbnQgaSwgaW50IGopIC8vaMOgbSBraeG7g20gdHJhIMO0IChpLCBqKSBjw7MgbuG6sW0gdHJvbmcgYsOgbiBj4budIGhheSBraMO0bmcKewogICAgcmV0dXJuIGk+MCAmJiBpPD1uICYmIGo+MCAmJiBqPD1uOwp9CmludCBjbnQ7CnZvaWQgYnRyYWNrKGludCBpKQp7CiAgICBpZihpPm4pewogICAgICAgIGlmKGNudD09aykgKythbnM7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYoY250PGspeyAvL3RyxrDhu51uZyBo4bujcCDEkeG6t3QgdOG6oWkgaMOgbmcgaQogICAgICAgIGZvcihpbnQgaj0xO2o8PW47KytqKXsKICAgICAgICAgICAgaWYoY29sW2pdIHx8IGNoZWNrW2ldW2pdKSBjb250aW51ZTsKCiAgICAgICAgICAgICsrY250OwogICAgICAgICAgICBjb2xbal09MTsKICAgICAgICAgICAgZm9yKGludCB4PTA7eDw4OysreCl7CiAgICAgICAgICAgICAgICBpbnQgbmk9aStkaVt4XSwgbmo9aitkalt4XTsgLy924buLIHRyw60gdOG7qyDDtCAoaSwgaikgY8OzIHRo4buDIGRpIHThu5tpIHRoZW8ga2nhu4N1IHF1w6JuIE3DowogICAgICAgICAgICAgICAgaWYoaW5zaWRlKG5pLCBuaikpIGNoZWNrW25pXVtual09MTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnRyYWNrKGkrMSk7CgogICAgICAgICAgICAtLWNudDsKICAgICAgICAgICAgY29sW2pdPTA7CiAgICAgICAgICAgIGZvcihpbnQgeD0wO3g8ODsrK3gpewogICAgICAgICAgICAgICAgaW50IG5pPWkrZGlbeF0sIG5qPWorZGpbeF07CiAgICAgICAgICAgICAgICBpZihpbnNpZGUobmksIG5qKSkgY2hlY2tbbmldW25qXT0wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgYnRyYWNrKGkrMSk7IC8vdHLGsOG7nW5nIGjhu6NwIGtow7RuZyDEkeG6t3QgdOG6oWkgaMOgbmcgaQp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgY2luID4+IG4gPj4gazsKICAgIGJ0cmFjaygxKTsKICAgIGNvdXQgPDwgYW5zOwogICAgcmV0dXJuIDA7Cn0K