#include #define N 8 #define K 4 #define REQ ((1 << K) - 1) int main(void) { unsigned int k[N]; unsigned int i; unsigned long long total = 0; for (i = 0; i < N; i++) k[i] = 0; while (1) { i = N - 1; while (++k[i] >= K) { if (!i) goto out; k[i--] = 0; } { unsigned int seen = 0; for (i = 0; i < N; i++) seen |= 1 << k[i]; if ((seen & REQ) != REQ) continue; } { unsigned long long n = 1; for (i = 0; i < N; i++) { unsigned int m; switch (k[i]) { case 0: m = 10; break; case 1: m = 26; break; case 2: m = 26; break; default: m = 33; } n *= m; } total += n; } } out: printf("%llu\n", total); return 0; }