#P1756. DNAcomputing

DNAcomputing

DNA computing is a form of computing which uses DNA, biochemistryand molecular biology, instead of the traditional silicon-based computertechnologies. DNA computing, or, more generally, molecular computing, is a fastdeveloping interdisciplinary area. Research and development in this areaconcerns theory, experiments and applications of DNA computing. DNAcomputing is fundamentally similar to parallel computing in that it takesadvantage of the many different molecules of DNA to try many differentpossibilities at once. So, many NP problem can be solved through DNA computing, such as Hamiltonian path problem, SAT problems, and so on.


The core reaction of DNA computing is the specific hybridization,which may results in incorrect or undesirable computations. Therefore, so farmuch works have focused on designing the DNA sequences to make the molecularcomputation more reliable.<o:p></o:p>




Input

There are several cases. Each case contains two integers, L (0<L≤25) and D (0≤D≤L) .

Output

For each case, output several lines, the first line is the size of the code set, then print all the elements of the code set in lexicographic. A element per line.

Sample Input

2 2

Sample Output

4
AG
CT
GA
TC

HINT

</p>

Source