#include <iostream>
using namespace std;

int cnt=0;

void gen(int a[8], int pos)
{	
	if (pos<8){ // если не все столбцы определены
		for(int i=0;i<8;i++){
			int correct=1;
			for(int j=0;j<pos;j++)
				if(a[j]==i || abs(a[j]-i)==pos-j)correct=0; // первое условие - несовпадение строк, второе несовпадение диагоналей
			if( correct){
				a[pos]=i;  // если для текущего столбца вариант обнаружен сохраняем вариант
				gen(a,pos+1); // и рекурсивно заполняем следующий
			}
		}
	}else{  // если сюда попали - все столбцы определы, а заодно и диагонали проверены
		cnt++;
	}
}

int main()
{
	int a[8];
	gen(a,0);
	cout<<cnt;
}
