Is there any hypothesis on the minimum number of amino acids required for life?
You can divide the 22 (including selenocysteine and pyrrolysine) proteinogenic amino acids into broad groups of similar amino acids. There are the hydrophobic amino acids like trypthophane, valine and leucine, the charged amino acids like glutamate and arginine and the polar amino acids like serine and threonine. There are some amino acids with unique features like cysteine which can form disulfide bonds.
Some amino acids are very similar, for example isoleucine and leucine, it is plausible that one of those would suffice to create most protein folds.
There are several examples of proteins designed with a smaller alphabet of amino acids, one example is the E. coli orotate phosphoribosyltransferase (Akanuma et al., 2002). The simplified enzyme consists of only 13 different amino acids and 88% of it are composed of only nine different amino acids. Even after those drastic changes the enzyme still folds correctly and has enzymatic activity.
There is one study (Fan and Wang, 2003) that tried to answer exactly the question you asked. They came to the conclusion that around 10 amino acids are necessary to create properly folding proteins:
First, we study the minimum sequence complexity that can reserve the necessary structural information for detection of distantly related homologues. Second, we compare the ability of designing foldable model sequences over a wide range of reduced amino acid alphabets, which ﬁnd the minimum number of letters that have the similar design ability as 20. Finally, we survey the lower bound of alphabet size of globular proteins in a non-redundant protein database. These different approaches give a remarkably consistent view, that the minimum number of letters required to fold a protein is around ten.
If you allow for the "RNA world" hypothesis, then the minimum number of amino acids needed for life would be zero, because RNA in that context would be self-replicating and would not need proteins (or their amino acids).
This organism is engineered to contain the simplest, smallest set of genes required to sustain life, i.e., metabolism, reproduction, etc.
The latest version of its genome is 531 kb long and is made up of 432 protein-coding genes. In the Supplementary Materials of that paper, there is a file called Database S1, an Excel spreadsheet. The authors state that this spreadsheet contains the amino acid sequence of proteins coded for by genes in JCVI-syn3.0.
When we take this column and filter out non-protein-coding or untranslated genes, we get a listing of sequences, like so:
This text can be processed with a simple Python script to count the number of unique residues, e.g.:
with open(sys.argv, 'r') as f: a = f.read()
b = re.sub('[\n-]', '', a) # strip out newlines and indels
len(list(set(b))) # count the number of unique codes
This answer suggests a minimally-viable organism codes for proteins that, altogether, use 20 amino acids.
I did not create a frequency table to see what is most commonly used, or what is least used, and what might be hypothetical targets for substitution with other amino acids. But that might be an avenue for further exploration.
In the future, Venter or other labs may find that there are ways to engineer an organism to use fewer genes, or protein-coding genes that use fewer amino acids or which use synthetic amino acids that have redundant chemical features that could allow it to substitute multiple residues, while preserving the protein's function.