In addition to the sample generation code, here are some examples with output produced from the initial version of my solution. I *think* I have a good algorithm, but I haven't proven that it generates the optimal solution. Example A input: Bob: Ellen Evan Vicki Helen Theo David Tracy Daria Matt Daria: Helen Evan Ellen David Bob Matt Tracy Theo Vicki David: Helen Matt Bob Daria Vicki Theo Evan Tracy Ellen Ellen: Bob Daria Helen Evan Matt Theo Tracy Vicki David Evan: Bob David Tracy Ellen Daria Vicki Helen Matt Theo Helen: Theo Daria Tracy Bob Evan Matt Vicki David Ellen Matt: Helen Ellen David Bob Theo Daria Tracy Evan Vicki Theo: Ellen Bob David Tracy Vicki Helen Matt Daria Evan Tracy: Evan Daria Bob Matt Ellen Vicki Theo Helen David Vicki: Tracy Daria Theo Helen Bob Ellen Matt Evan David Example A output: Ellen Bob Daria Helen Tracy Evan David Matt Vicki Theo Example B input: David: John Hank Evan Gail Walter Evan: David Hank Gail Walter John Gail: David John Walter Evan Hank Hank: Gail John Walter David Evan John: Hank David Evan Gail Walter Walter: Evan John Hank Gail David Example B output: David John Walter Evan Hank Gail Example C input: Anna: Betty Rosa Daria Helen Ellen Theo Betty: Rosa Daria Anna Helen Theo Ellen Daria: Rosa Theo Ellen Helen Betty Anna Ellen: Betty Helen Rosa Daria Theo Anna Helen: Theo Daria Anna Rosa Ellen Betty Rosa: Daria Ellen Helen Betty Theo Anna Theo: Daria Ellen Helen Betty Anna Rosa Example C output: Rosa Daria Betty Anna Helen Theo Ellen