NPR Sunday Puzzle Solving, And Other Baby Name Questions

If you have a long drive and no bluetooth or aux cord to listen to podcasts, NPR is easily the best alternative. Truck drivers agree with this statement no matter their overall views. For me, this was the case when driving home to Milwaukee from Ann Arbor where I went to a college friend’s wedding.

While driving back I listened to NPR and heard Weekend Edition Sunday and their Sunday Puzzle pop up. If you haven’t heart of it before, at the end of every week’s episode they state a puzzle. Throughout the next week listeners can submit their answer and one random correct submitter is chosen to be recorded doing a mini puzzle on air.

The puzzle they stated for the week after the wedding was as follows:

Think of a familiar 6-letter boy’s name starting with a vowel. Change the first letter to a consonant to get another familiar boy’s name. Then change the first letter to another consonant to get another familiar boy’s name. What names are these?

They’ve already released the show for this question (I didn’t win of course) so I figure I can write about how I found out the answer!

Solving The Name Question

First step as always for these types of posts is gathering the required list of familiar boy’s names.  Searching on Google for lists will show that there are a ton of sites which exist try to SEO themselves for the money. When scraping, you should to poke around and make sure to choose the post that has the correct data as well as being the most simple to gather. I went with this one.

Since there’s only one page with the data, there’s no need to use the requests library to scrape the different pages. So clicking save html file to the folder you’re programming in is the best way to get the data.

The scraping code itself is pretty simple.

from bs4 import BeautifulSoup

filename = 'boy_names.html'
vowels = ('A', 'E', 'I', 'O', 'U')

vowel_starters = []
consonant_starters = []

with open(filename, 'r') as file:
  page =
  html = BeautifulSoup(page.replace('\n',''), 'html.parser')
  for name_link in html.find_all("li", class_="p1"):
    name = name_link.text
    first_letter = name[0]
    if len(name) == 6:
      if first_letter in vowels:

for vname in vowel_starters:
  cname_same = []
  for cname in consonant_starters:
    if vname[1:] == cname[1:]:
  if cname_same:
    print vname
    for match in cname_same:
      print match

And the results are…

Austin, Justin, Dustin

Justin and Dustin rhyme which makes it more simple to realize that they match, but Austin isn’t exactly on the same page. If I didn’t have the code, zero chance I’d have gotten this correct.

That’s it right? Nope, I have all the code, I figured I should check to see if there’s a match for girls names with that same rules. All there was to do is save the popular girl names to the same folder, change the filename to ‘girl_names.html’, run the code, and we’ll get Ariana and Briana. A and B are the starting letters, and if Criana was a popular name (at this moment), we’d be good to for the full 3 name answers.

By going through this part, I came up with some other fun questions that could be answered with this list of names, and the rest of the post is about those.

Just note that I’m not going to show the code on this post anymore. There’s a lot of it, and it’s better to only show and talk about the results here. But if you want to see how I wrote everything, check out the file on Github!

Schultz’s Law

Before I continue to other name analysis, I want to talk about how it’s not appropriate for me to try to explain why the results look like they do. There are plenty of interesting results below where I’m tempted to talk about how they seem correct and give an explanation. But it’s also the case where, if the results were flipped, I could say they made sense and offer another explanation that I believe in! When I see this on Reddit or HN in threads about new studies or statistics, it’s as if people want to comment and sound smart.

I’ve looked around for a while trying to see if there’s a psych term for this but have gotten nowhere. Things like the Belief Bias is close, but that’s judging arguments not agreeing with them. The Illusory Truth Effect is very close, but that deals with believing incorrect information over time. I’ve actually gone through every one of these cognitive biases and tried to find a matching one, but didn’t find one.

Edit: Forgot to include Confirmation Bias (reminded from comment below) and why I don’t think this belongs here. Confirmation Bias states that people use data to confirm their preexisting beliefs. As you’ll see below, the law I’m stating deals with people don’t have beliefs in the first place.

Therefore, if this doesn’t exist, I’m naming this Schultz’s Law:

When presented with a set of facts or informed of any phenomenon, people have the tendency to agree with it and come up with an explanation that confirms and makes sense of the results as a way to sound knowledgable on the subject, whether or not the phenomenon was predicted at the time.

A great example of this is when we tried to make a last minute tee time yesterday (a Sunday) and all the courses were packed. We could be smart and explain to others that this happened because the weather is great for October and that there isn’t a Packer game this Sunday to keep people inside to watch the game. Or if the tee sheet was wide open, we could see that makes sense because it’s a Sunday afternoon, a new week is about to start, and the people with families are expected to be home and help prepare for the week.

In this case for this post, you’ll see that the average and standard deviation of the lengths of boy’s names are both smaller than girl names, I can come up with an explanation about how parents think girls are more unique than boys and having more diverse names will show that. If those numbers were flipped, an explanation could be how girls names that used to be short names for longer ones have the real name where boys still keep the formal version.

Edit: Here’s a perfect example of this law I found on Reddit. Somewhat odd stat that a guy calculated saying that Wild Card teams have had more recent success in the MLB playoffs than a 100 win team (Few data points, only 22 and 23 for each group, but that’s beside the point here). One of the top comments is a guy saying why it makes sense, even though the stat is unexpected.

I’m not claiming here that I’m the first person to find this, and I’m not claiming there isn’t already a term. I’ve searched all over and haven’t found a match. I haven’t done a psych study about this so don’t know for sure if this is the case for everyone, but hey, it fits here and is why I’m not going to try to explain why the results are the results. I can’t go claiming I’m an expert at baby names.

So if somebody finds it which has a different name, then get in contact, email, twitter, post comment, please get in contact and I’ll write the edit here, cross it out, show who told me I’m wrong and not the first. If not, I’m taking credit.

Ok, I’m done explaining why I’m not going to explain the results.

Names that share other beginning letters

Since the requirements for the NPR question say that the three names each have six letters, one name starts with a vowel, and the other two names start consonants, the first extension of this question is getting a list of names where the length of the names and the starting letters aren’t a requirement. Rhyming names.

Boys have 88 rhyming matches:

[u’KASON’, u’MASON’, u’JASON’, u’CASON’] [u’ELIJAH’, u’ALIJAH’] [u’ZAYDEN’, u’KAYDEN’, u’HAYDEN’, u’RAYDEN’, u’CAYDEN’, u’JAYDEN’] [u’KARTER’, u’CARTER’] [u’DYLAN’, u’KYLAN’, u’RYLAN’] [u’DUKE’, u’LUKE’] [u’CALEB’, u’KALEB’] [u’MACK’, u’JACK’] [u’ELI’, u’ALI’] [u’CONNOR’, u’KONNOR’] [u’KAMERON’, u’CAMERON’] [u’COLTON’, u’KOLTON’] [u’JUDSON’, u’HUDSON’] [u’IVAN’, u’EVAN’] [u’AUSTIN’, u’JUSTIN’, u’DUSTIN’] [u’DAVIN’, u’GAVIN’] [u’IAN’, u’VAN’, u’EAN’] [u’DEVIN’, u’KEVIN’] [u’TYLER’, u’KYLER’] [u’KARSON’, u’CARSON’] [u’XAVIER’, u’JAVIER’, u’ZAVIER’] [u’CAMDEN’, u’KAMDEN’] [u’KOLE’, u’COLE’] [u’MAX’, u’DAX’, u’JAX’] [u’KAIDEN’, u’HAIDEN’, u’RAIDEN’, u’CAIDEN’, u’JAIDEN’, u’ZAIDEN’] [u’IMMANUEL’, u’EMMANUEL’] [u’JOEL’, u’NOEL’] [u’BRYAN’, u’ARYAN’] [u’CADEN’, u’JADEN’, u’AADEN’, u’KADEN’] [u’CASE’, u’KASE’, u’JASE’] [u’BRIAN’, u’ARIAN’] [u’GRADY’, u’BRADY’] [u’RAUL’, u’PAUL’, u’SAUL’] [u’DEAN’, u’SEAN’] [u’XANDER’, u’ZANDER’] [u’KORBIN’, u’CORBIN’] [u’PAXTON’, u’JAXTON’, u’MAXTON’, u’DAXTON’] [u’ZANE’, u’LANE’, u’KANE’, u’DANE’] [u’CODY’, u’KODY’] [u’LAWSON’, u’DAWSON’] [u’GAGE’, u’SAGE’] [u’AMARI’, u’OMARI’] [u’DASH’, u’NASH’, u’KASH’, u’CASH’] [u’CRISTIAN’, u’KRISTIAN’] [u’GARRETT’, u’BARRETT’] [u’DARIO’, u’MARIO’] [u’KYSON’, u’TYSON’] [u’KOHEN’, u’COHEN’] [u’DREW’, u’CREW’] [u’WADE’, u’KADE’, u’CADE’] [u’ADEN’, u’EDEN’] [u’CORY’, u’RORY’] [u’JAY’, u’RAY’] [u’DARREN’, u’WARREN’] [u’MAYSON’, u’KAYSON’, u’JAYSON’, u’CAYSON’] [u’MILAN’, u’DILAN’] [u’DAMON’, u’RAMON’] [u’RONALD’, u’DONALD’] [u’COLBY’, u’KOLBY’] [u’BAYLOR’, u’TAYLOR’] [u’KASEN’, u’CASEN’] [u’JERRY’, u’TERRY’] [u’WAYNE’, u’LAYNE’, u’ZAYNE’] [u’ROWEN’, u’BOWEN’] [u’CANNON’, u’GANNON’, u’KANNON’] [u’LAYTON’, u’PAYTON’, u’DAYTON’] [u’DAMARI’, u’JAMARI’, u’KAMARI’] [u’KOLTEN’, u’COLTEN’] [u’ROHAN’, u’JOHAN’] [u’LARRY’, u’HARRY’] [u’TREY’, u’GREY’] [u’TRENT’, u’BRENT’] [u’ARIEL’, u’URIEL’] [u’NOE’, u’JOE’] [u’KRISTOPHER’, u’CRISTOPHER’] [u’LANCE’, u’VANCE’] [u’KELVIN’, u’MELVIN’] [u’MARLEY’, u’HARLEY’] [u’JAMIR’, u’SAMIR’] [u’CAIN’, u’ZAIN’] [u’YADIEL’, u’JADIEL’] [u’MAISON’, u’KAISON’] [u’DAVION’, u’JAVION’] [u’KEAGAN’, u’REAGAN’] [u’CAMDYN’, u’KAMDYN’] [u’KAMRON’, u’CAMRON’] [u’JAIRO’, u’CAIRO’] [u’KAMREN’, u’CAMREN’]

and girls have 102 rhyming matches:



Names with One Letter Differences

Replacing I with a Y

Along the lines of rhyming names, how about a list of names where the I is switched with a Y. Very common these days. Somewhat controversial, but hey, names change over time.

Boys name matches: 18
[set([u’MAISON’, u’MAYSON’]), set([u’BRYCE’, u’BRICE’]), set([u’AIDEN’, u’AYDEN’]), set([u’JAYDEN’, u’JAIDEN’]), set([u’KAISON’, u’KAYSON’]), set([u’ZAYDEN’, u’ZAIDEN’]), set([u’RAYDEN’, u’RAIDEN’]), set([u’AYDAN’, u’AIDAN’]), set([u’CAIDEN’, u’CAYDEN’]), set([u’KAIDEN’, u’KAYDEN’]), set([u’ARYAN’, u’ARIAN’]), set([u’SILAS’, u’SYLAS’]), set([u’BRIAN’, u’BRYAN’]), set([u’DILAN’, u’DYLAN’]), set([u’HAIDEN’, u’HAYDEN’]), set([u’ZAYN’, u’ZAIN’]), set([u’BRAYDEN’, u’BRAIDEN’]), set([u’MILES’, u’MYLES’])]

Girl name matches: 44
[set([u’LAYLA’, u’LAILA’]), set([u’REMI’, u’REMY’]), set([u’ARYANA’, u’ARIANA’]), set([u’ARIANNA’, u’ARYANNA’]), set([u’REYNA’, u’REINA’]), set([u’MIA’, u’MYA’]), set([u’HAYLEY’, u’HAILEY’]), set([u’ALAIA’, u’ALAYA’]), set([u’KENIA’, u’KENYA’]), set([u’KAILEE’, u’KAYLEE’]), set([u’AMYA’, u’AMIA’]), set([u’ALAYNA’, u’ALAINA’]), set([u’KAYA’, u’KAIA’]), set([u’ELISE’, u’ELYSE’]), set([u’MARIAM’, u’MARYAM’]), set([u’ALYSON’, u’ALISON’]), set([u’LILAH’, u’LYLAH’]), set([u’MYLA’, u’MILA’]), set([u’KYRA’, u’KIRA’]), set([u’SYDNEY’, u’SIDNEY’]), set([u’ARYA’, u’ARIA’]), set([u’HAILEE’, u’HAYLEE’]), set([u’JAYDA’, u’JAIDA’]), set([u’AVERI’, u’AVERY’]), set([u’AYLEEN’, u’AILEEN’]), set([u’WINTER’, u’WYNTER’]), set([u’RAINA’, u’RAYNA’]), set([u’BAYLEE’, u’BAILEE’]), set([u’KENNEDY’, u’KENNEDI’]), set([u’MAYA’, u’MAIA’]), set([u’MIAH’, u’MYAH’]), set([u’BRIANNA’, u’BRYANNA’]), set([u’HARMONI’, u’HARMONY’]), set([u’ALISSA’, u’ALYSSA’]), set([u’ADDISON’, u’ADDYSON’]), set([u’LEILA’, u’LEYLA’]), set([u’ALLISON’, u’ALLYSON’]), set([u’LAYLAH’, u’LAILAH’]), set([u’LYLA’, u’LILA’]), set([u’MACY’, u’MACI’]), set([u’MADISON’, u’MADYSON’]), set([u’MIRA’, u’MYRA’])]

IE and Y

Boy name matches: 1
[set([u’BRODIE’, u’BRODY’])]

Girl name matches: 11
[set([u’MARIE’, u’MARY’]), set([u’AVERY’, u’AVERIE’]), set([u’MELANIE’, u’MELANY’]), set([u’EMERIE’, u’EMERY’]), set([u’MACY’, u’MACIE’]), set([u’LILLIE’, u’LILLY’]), set([u’NATHALY’, u’NATHALIE’]), set([u’EMILIE’, u’EMILY’]), set([u’ALLY’, u’ALLIE’]), set([u’NATALIE’, u’NATALY’]), set([u’KYRA’, u’KIERA’])]

EE and Y

Boy name matches: 0

Girl name matches: 3
[set([u’CARLEE’, u’CARLY’]), set([u’EMILEE’, u’EMILY’]), set([u’NATALY’, u’NATALEE’])]

A and Y

Boy name matches: 2
[set([u’KASON’, u’KYSON’]), set([u’JORDYN’, u’JORDAN’])]

Girl name matches: 4
[set([u’JORDYN’, u’JORDAN’]), set([u’EMMY’, u’EMMA’]), set([u’JENNA’, u’JENNY’]), set([u’LILY’, u’LILA’])]

Not all of these are rhyming switches. Jordyn and Jordan (for both boys and girls) rhyme, but Lily and Lila do not.

K and C

Aah! I finally found one where there are more boy name matches than girl name matches.

Boy name matches: 38
[set([u’DOMINIC’, u’DOMINIK’]), set([u’ERIC’, u’ERIK’]), set([u’COLTEN’, u’KOLTEN’]), set([u’CARSON’, u’KARSON’]), set([u’KODY’, u’CODY’]), set([u’CAMDYN’, u’KAMDYN’]), set([u’CADEN’, u’KADEN’]), set([u’KASEN’, u’CASEN’]), set([u’KOLTON’, u’COLTON’]), set([u’CASH’, u’KASH’]), set([u’CAMRON’, u’KAMRON’]), set([u’KOLE’, u’COLE’]), set([u’CAIDEN’, u’KAIDEN’]), set([u’JACE’, u’JAKE’]), set([u’KRISTIAN’, u’CRISTIAN’]), set([u’KRISTOPHER’, u’CRISTOPHER’]), set([u’CADE’, u’KADE’]), set([u’NICO’, u’NIKO’]), set([u’KAMDEN’, u’CAMDEN’]), set([u’NICOLAS’, u’NIKOLAS’]), set([u’KAMREN’, u’CAMREN’]), set([u’CASE’, u’KASE’]), set([u’COHEN’, u’KOHEN’]), set([u’CARTER’, u’KARTER’]), set([u’LUCA’, u’LUKA’]), set([u’CAYDEN’, u’KAYDEN’]), set([u’KOLBY’, u’COLBY’]), set([u’CAYSON’, u’KAYSON’]), set([u’MARK’, u’MARC’]), set([u’KALEB’, u’CALEB’]), set([u’CAMERON’, u’KAMERON’]), set([u’LUCAS’, u’LUKAS’]), set([u’CASON’, u’KASON’]), set([u’MARCUS’, u’MARKUS’]), set([u’KONNOR’, u’CONNOR’]), set([u’CORBIN’, u’KORBIN’]), set([u’CANNON’, u’KANNON’]), set([u’JACOB’, u’JAKOB’])]
Girl name matches: 18
[set([u’KATHERINE’, u’CATHERINE’]), set([u’CARLEE’, u’KARLEE’]), set([u’CAYLEE’, u’KAYLEE’]), set([u’KAITLYN’, u’CAITLYN’]), set([u’CALI’, u’KALI’]), set([u’CASSIDY’, u’KASSIDY’]), set([u’CARA’, u’KARA’]), set([u’KASSANDRA’, u’CASSANDRA’]), set([u’CAMRYN’, u’KAMRYN’]), set([u’CATALINA’, u’KATALINA’]), set([u’ERIKA’, u’ERICA’]), set([u’CALLIE’, u’KALLIE’]), set([u’CAMILA’, u’KAMILA’]), set([u’CARLA’, u’KARLA’]), set([u’CORA’, u’KORA’]), set([u’KHLOE’, u’CHLOE’]), set([u’CARTER’, u’KARTER’]), set([u’KIARA’, u’CIARA’])]

G and J

Odd, not what I expected, and by Schultz’s law I’d probably be able to come up with an explanation to why only one of the jenders (get it? get it?) have have G/J flip.

Boy name matches: 0
Girl name matches: 1
[set([u’GEMMA’, u’JEMMA’])]

K and J

Flipping K for another letter seems to be incredibly popular based on the giant list of letter flips, and KJ is another example.

Boy name matches: 7
[set([u’JAMARI’, u’KAMARI’]), set([u’KASON’, u’JASON’]), set([u’KAYSON’, u’JAYSON’]), set([u’KAIDEN’, u’JAIDEN’]), set([u’KAYDEN’, u’JAYDEN’]), set([u’KADEN’, u’JADEN’]), set([u’KASE’, u’JASE’])]
Girl name matches: 9
[set([u’JAELYNN’, u’KAELYNN’]), set([u’JAYLYNN’, u’KAYLYNN’]), set([u’KAYLEE’, u’JAYLEE’]), set([u’KAELYN’, u’JAELYN’]), set([u’JAYLIN’, u’KAYLIN’]), set([u’KAYDEN’, u’JAYDEN’]), set([u’JALIYAH’, u’KALIYAH’]), set([u’KAYLA’, u’JAYLA’]), set([u’KENNA’, u’JENNA’])]

K seems to be replaceable where it is matched with more than a few other random letters. K and H is another example. 4 matches for boys, 6 for girls. K and M have 4 for boys and 9 for girls.

CK and K, HN and N

One last grouping here.

Boy name matches: 3
[set([u’ERICK’, u’ERIK’]), set([u’DOMINIK’, u’DOMINICK’]), set([u’NIKOLAS’, u’NICKOLAS’])]
Girl name matches: 1
[set([u’MACKENZIE’, u’MAKENZIE’])]

No dice for my name. I figured I should check to see if my name Jack matched up with Jak.

Boy name matches: 2
[set([u’JOHN’, u’JON’]), set([u’JONATHAN’, u’JOHNATHAN’])]
Girl name matches: 0

Heyo, since my parents decided to name me John with the used name being Jack, I check the HN to N combo and John shows up.

I could keep listing examples; it’s fun to go through all the letter flips to see what the common changes of this day are. I’ll stop here.

Do boys or girls have longer names?

Moving on from letters, another comparison that came into my head is the length of names.


Boy length average: 5.777
Boy length std: 1.31729685341

Girl length average: 6.043
Girl length std: 1.39468670317


From the graph you can see that the boy’s name normal distribution is slightly shifted to the left of the girl’s names. And the number agree with that. Always nice when the numbers match the picture.

Do names begin with vowels or consonants?

Moving forward! Since the NPR question had to do with names beginning with a vowel and consonant, why not calculate and graph the percentages of names for each gender that begin with a vowel compared to consonant?


Boys and girls are very similar here.

Do names end with vowels or consonants?

Time for the graphs about whether names end with vowels of consonants.

Now that’s crazy! Girls names love ending in vowels apparently. Make of that what you will.

Which vowels do the names begin with?

Because of the difference in vowel consonants between the genders, I next decided to check which specific vowels names most frequently begin with.

You’re able to slightly see this information in the graph above, but I figured the result is so interesting it needs a more informative graph.

Similar, and ignoring the color difference with O and U, you’ll see that girls don’t have any names that begin with a U.

Which vowels do names end with?

Zomg. Wat. Like holy crap. I understand the idea for male to female differences of ‘O’ and ‘A’, but zero? Zero girls with names that end in an O? Even if I wanted to show Schultz’s Law I don’t think I could come up with a reasonable explanation of this.

I’ll call it here. If new parents are reading this post and trying to think of a girl’s name that doesn’t exist and isn’t popular yet, they’ll pick one that ends in an O to be the beginning of the change.

Which letters do the names most commonly start with?

Final data section here, I figure I should check to see which letters are more common for a girl and boy name to end with.

Most boy names begin with J where A is close behind, but girl names that begin with A crush boy A names. Everything else seems matching.

Final Thoughts

I spent somewhat of a week on and off writing this. I asked more than a few people what ideas they had for looking at the names and these were the ones we came up with. It’s not like there aren’t others! Things like whether popular names from the past are making a comeback. Do the lengths change over time? Do the percentages of names that start and end with vowels change over time?

All of these differences seem like great ways to try to guess which gender a name is associated with. Something like a decision tree would be a great way to show this. When part 2 comes along maybe I try to see how those results will be.

As always, code twitter, golf twitter (if you’re interested), and contact as always. I like hearing from people.

4 thoughts on “NPR Sunday Puzzle Solving, And Other Baby Name Questions

  1. Re Schultz’ Law, I read recently about a study where they shared “obvious” research findings with test subjects, who were able to come up with reasons why the research findings were obvious and didn’t need to have been studied. The catch was, the actual findings from the research were the exact opposite of what subjects were told. I wish I could find the link for you. (Obviously it didn’t exist. I’m a figment of your imagination. This is all a dream. Time travel.)


    • That’s the one! I kept looking around for one like that but couldn’t find anything. Searching for research papers and being able to read something other than the abstract is stupidly tough. Exactly what I meant with this. You gotta find that so I can update with that link.


  2. Hey! I think your the cognitive bias you’re looking for is is the confirmation bias:

    1. When people are presented with a set of facts they agree with it- if it’s a fact, e.g. tee time availability, or the results of a statistical analysis, why wouldn’t they agree with it?

    2. They look for reasons to confirm it or make sense of it- definitely sounds like the confirmation bias- “the tendency to search for, interpret, favor, and recall information in a way that confirms one’s preexisting beliefs”


    • Ahh right, forgot to include that one in the list. That was the first one that popped up for me searching for a current one. For me, this doesn’t match up perfectly since the situation I’m talking about is when people don’t have initial beliefs at all. As if the data / results / stats give a person an instant belief and the desire to explain it. That might be a better way of phrasing this “law”. I put this link above as well, but this is the perfect example of what I’m talking about. Random stat, someone claiming that it doesn’t surprise them.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s