Problem 1. In a computer language Python, identifiers must start with one of the 53 symbols: either one of the 52 letters of the upper- and lower-case Roman alphabet or an underscore(_). The initial character may stand alone, or it may be followed by any number of additional characters chosen from a set of 63 symbols: the 53 symbols allowed as an initial character plus the ten digits. Certain keywords, however, such as and, if, print, and so forth, are set aside and may not be used as identifiers. In one implementation of Python there are 29 such reserved keywords, none of which has more than eight characters. How many Python identifiers are there that are less than or equal to eight characters in length?

Problem 2. A professor in an advanced computer course takes a survey on the first day of class to determine how many students know certain computer languages. The finding is that out of a total of 50 students in the class,

30 know Java;
18 know C++;
26 know C#;
9 know both Java and C++;
16 know both Java and C#;
8 know both C++ and C#;
47 know at least one of the three languages.

Note that when we write "30 students know Java," we mean that the total number of students who know Java is 30, and we allow for the possibility that some of these students may know one or both of the other languages. If we want to say that 30 students know Java only (and not either of the other languages), we will say so explicitly.

a. How many students know none of the three languages?
b. How many students know all three languages?
c. How many students know Java and C++ but not C#? How many students know Java but neither C++ not C#?

Problem 3. How many permutations of the letters A, B, C, D, E, F, G contain the strings ABC or DE?