Self-referential language counting (I learned another word today bringing my total to fourteen words and twenty letters)

Originally published on eve.gd on 12 October 2023, last updated 6 September 2026.

Read this post on the web (with images, PDF and citation details)

A recent XKCD caused some amusement: “Vocabulary update: I learned another word today, bringing my total to twelve”.

recent XKCD

We wondered whether there might be possible formulations of this joke that also contained the unique character count, so I wrote the following python script:

import num2word
import numpy

def find_self_reference():
    sentence = "I learned another word today bringing my total to {0} words and {1} letters"
    words = 12

    for i in range(0, 1000):
        num_word = num2word.word(i)
        final_words = words + numpy.char.count(num_word, " ") + 1
        final_num_words = (
            int(final_words)
            + int(numpy.char.count(num2word.word(int(final_words)), " "))
            + 1
        )

        sentence_sub = sentence.format(num2word.word(final_num_words), num_word)
        characters = len(set(sentence_sub.replace(" ", "")))

        print(f"Needed {characters} characters but got {i}.")

        if characters == i:
            print(sentence_sub)
            return

This gives us the following results:

or

Good to have a hobby.

References

This reference list has been generated, in many cases, through an automated process and may therefore contain errors or incomplete metadata. It is provided purely as assistance for finding the items mentioned within this post.

1. ‘2839: Language Acquisition’, explain xkcd <https://www.explainxkcd.com/wiki/index.php/2839:_Language_Acquisition>

https://www.explainxkcd.com/wiki/index.php/2839:_Language_Acquisition