How many parameters on a Bayesian network I'm taking Coursera's course on probabilistic graphical models, and I'm stuck on a question. The discussion forums there are dead, and I can't find any resource to help me, so I hope someone could enlighten me here.
We have a model of cystic fibrosis described with the following bayesian network:

We need to count how many parameters are needed to specify all the probability distributions. The genotypes are represented by the alleles $\{F, f, n\}$ and could be either one of the genotypes $\{FF, Ff, ff, Fn, fn, nn\}$. For the phenotype, a person could either have cystic fibrosis or not have it.
My first thought
I thought, for Ira's and Robin's genotype, there are 5 parameters each since we have 6 different genotypes. For each genotype, there are 2 possibilities for the phenotype, so, there are 6 parameters for each phenotype. Now, for James's genotype, there are 6 genotypes for Robin, 6 genotypes for Ira, and 6 genotypes for James, so, considering the degrees of freedom, we have $6*6*5=180$ parameters. So we would have $5+5+6+6+6+180=208$ parameters. But this answer is incorrect.
My seconthoughtgh was
Ok, not all $6*6*6$ combinations of Ira's, Robin,'s and James's genotypes are possible, for example, if Ira and Robin, have $FF$ genotypes, then James will only have a $FF$ genotype, so I wrote the following code to count how many parameters I would have:
import itertools
import pandas as pd


alleles = ['F', 'f', 'n']


def get_available_genotypes(alleles):
    combinations = map(sorted, itertools.product(alleles, alleles))
    combinations_hashable = map(lambda x: x[0] + x[1], combinations)
    unique_combinations = set(combinations_hashable)
    return unique_combinations
    
    
def insert_available_children(df, parent_1, parent_2):
    for child in itertools.product(parent_1, parent_2):
        
        child = sorted(child)
        child = child[0] + child[1]
        
        df['parent_1'].append(parent_1)
        df['parent_2'].append(parent_2)
        df['child'].append(child)
        
    return df

parent_1 = get_available_genotypes(alleles)
parent_2 = get_available_genotypes(alleles)

df = {
    'parent_1': [],
    'parent_2': [],
    'child': []
}

for p1, p2 in itertools.product(parent_1, parent_2):
    df = insert_available_children(df, p1, p2)
    
df = pd.DataFrame(df)
print((df.drop_duplicates().groupby(['parent_1', 'parent_2']).count() - 1).sum())

This gave me 42 parameters for James's genotype, which gives me $5+5+6+6+6+42=70$ parameters. But this answer is also wrong.
Now, since this is a MOOC and I do want to learn, I don't want the answer to how many parameters the model have, but, if someone could clarify what I'm doing wrong, or point me in the right direction, I would greatly appreciate.
Edit 1:
Maybe I'm missing something on the question itself, here is what the question is asking:

You will now gain some intuition for why decoupling a Bayesian network can be worthwhile.  Consider a non-decoupled Bayesian network for cystic fibrosis with 3 alleles over the pedigree that was used in section 2.4 and 3.3.  How many parameters are needed to specify all probability distributions across the entire network?

And you can find the course material here. As bdeonovic pointed out, you would only need the parameters for $P(phenotype | genotype)$ so that removes $12$ parameters. I tried his answer of $16$ as well as $5+5+6+180 = 196$ and $5+5+6+42 = 58$ and all of them are wrong. I wonder if it's not also a matter of estimating parameters for $P(\text{parent's genotype})$ instead of $P(\text{Ira's genotype})$ and $P(\text{Robin's genotype})$, which would also remove 5 parameters. It does seems that we need to model allels with different frequencies, as this is described in the apendix

I am thinking about 6 * 6 * 5 = 180. 6 genotypes from mother or father and of course, there would be 6 potential genotypes for the kid (but -1 for "degree of freedom" thing here for the kid as we are talking about "kid's genotype given parents' genotypes).
