What's the best starting word for Wordle and Absurdle
After playing the new popular word game Wordle, I’ve been trying to figure out the best strategy for which words to guess, especially for the first word. In case you missed it, Wordle is a word game that’s taking the world by storm as it presents daily challenges to guess a five-letter word. When you make a guess it tells you which letters are correct, which are correct but in the wrong space, and which are incorrect. It gives you a total of six guesses to figure out the daily word.
TLDR: The best word is either “cares” or “arise”, depending on your approach
The Problem
When starting a Wordle game, there’s no way to figure out which letters are in the word before guessing the first word. That got me thinking, there must be a best word, some word that makes it easiest to get the right answer in the least amount of guesses. So, how do you figure out what word is the best?
Approach 1: Statistics
My first idea was to evaluate a list of popular 5-letter words, and figure out which letters appear most in each position of the word. This approach was pretty simple to implement: I downloaded a list of popular words, filtered out any words that were not 5 letters, and ran a python script that calculates how many times each letter occurs in each word.
Once running this program, I ended up with some interesting results: the most popular first letter was s
, the second letter a
, the third letter r
, the forth letter e
, and the fifth letter s
. As sares
is not a word, I could not use that for Wordle. Even if it was a word, it would probably not be ideal - there are two s
s in the word, meaning I’m only checking if s
, a
, r
, and e
are in the word. Since this was the case, I decided to print out the popularity of each letter, and pick letters close to the top that made a word without any duplicate letters. Here are the results (the first line contains the most popular letters in each position, the second shows the second most popular, and so on):
sares
coaae
aeiiy
binta
tuont
prlln
mleor
dhurd
gntsl
ftsuo
rpmdi
lycch
hcdkk
kmggm
wwbmc
esppp
ndkbg
obvhu
ugwfx
ikyvf
vvhyb
jxfww
yfzzz
zzxjv
qqjxq
xjqqj
I decided, given these results, CARES
would be the best first word. All but the first letter are the most common in their positions, and the C
is the second most common.
The Bot
With this data, I felt like I shouldn’t stop here. I know how popular each letter is, meaning I have an objective way of scoring guesses. So I started making a python program that would tell you what to guess, and once you got the results, would tell you what to guess next.
The process of making the bot presented a few hurdles, including my word list not including everything I needed (which made me download a much larger list), my bot would guess invalid words (which make me filter out words that weren’t in the new list), and my bot picking less popular words that Wordle would not pick (words I’ve never heard of).
In the process of building the bot, I found the site hello wordl that let me keep guessing new words (since Wordle only allows one word per day).
I finally completed this first bot, and ended up with a pretty simple algorithm:
-
loop through the list of words
-
if a word will not work with previous clues, move to the next word
-
calculate the score of each word by adding the popularity of each letter
-
if the word has double letters, subtract some points
-
if the word is not on the popular word list, subtract even more points
-
if the word has two of the same letters, subtract some points
Once I finished writing these rules, I ended up with a pretty good bot. It could usually get words in 4 guesses, sometimes 3, sometimes 5. However, around this time I discovered the Absurdle game, and I wanted to try a new approach to the problem inspired by that game.
Approach 2: Possibilities
The way the Absurdle game works is simple: when you guess a word, it gives you the worst possible result (the result that leaves the most possible words). This got me thinking - the way to beat Absurdle, and consequently beat Wordle, is to choose the word that leaves the least possible results. But that’s a little tricky, since Absurldle always gives as many possibilities as it can.
Therefore, my new approach was this: find the word that, in the worst case, will result in the least amount of possibilities. I wanted to be able to toggle on and off hard mode
(where you have to use the previous clues for each guess), just like the real game. This resulted in an interesting rule set:
-
loop through the possible guesses
-
for each possible guess, figure out what the possible responses from the site will be
-
remember the response from the site that leads to the most possible answers
-
choose the word with the smallest “largest possible answer count” (I know this is getting kind of confusing, bear with me)
-
after trying every word, return the best one to the user
This approach took a lot of updates and optimizations to get the code running in a reasonable amount of time, since at first there are 243 possible responses the game can give fir each guess. Finally, I had a program that runs in a reasonable amount of time, and I was ready to try it.
I got the result: arise
results in the smallest pools of answers, where all the letters being incorrect leads to 168 possible answers, and all other responses lead to less than that. That means once you guess the word arise
, there less always going to be 168 or less possible answers (this time I got the possible answers directly from the Wordle site). This may sound like a lot, but there are a total of 2315 possible answers, so that’s actually a big accomplishment.
Although the bot still takes 5 turns to beat Absurdle, it can usually guess a Wordle puzzle in 3 or 4 guesses. I don’t think this is the best bot around, but it certainly beats my first attempt.
Conclusion
So, why did I start by saying cares
or arise
could be the best word, when my (clearly superior) bot picked arise
? It’s simple: cares
is more likely to give you some useful information (since those letters are more popular), so it might be a better guess for human players.
Also, I’m not saying these are the absolute best words. Depending on how you play, knowing other letters might be more useful to you. If you’re just trying to have fun, and don’t want the perfect word, I think using any word with a lot of vowels is a good idea, and since s
seems like a common letter, maybe include one of those. Although I can’t prove it, I feel like guessing words with all unique letters is best, and I think playing on hard mode actually makes the game easier for me. But that’s just my two cents.