## 6 Experiment Details
### The Generation of Typographical Errors  
We took a similar approach for the generation of typographical errors, as in [78]. Close to a process of text writing, the program moves through each symbol and induces errors in a stochastic manner by evaluating probabilities of various error types for each character. This includes deletion, insertion, substitution, and transposition operations. The chance for a letter to participate in a particular error type is determined according to the frequency of errors in the reference dataset. We used the largest known original typo dataset, the GitHub Typo Corpus [113]. The dataset was filtered for only English language typos and the characters were selected with a count of at least 1000. Given the final character set \(C\), the total number of times \(f(c)\) the character \(c\in C\) or a specific typo pattern appeared in the selected corpus, the following probabilities for each character are considered:  
\[P(\text{deletion }|\ c)=\frac{f(c\rightarrow\varnothing)}{f(c)}, \tag{4}\]  
\[P(\text{substitution }|\ c)=\frac{\sum\limits_{\in C}f(c\rightarrow\underline{c})} {f(c)}, \tag{5}\]  
\[P(\text{insertion after }|\ c)=\frac{\sum\limits_{\in C}f(c\to c \underline{c})}{2f(c)},\quad P(\text{insertion before }|\ c)=\frac{\sum\limits_{\in C}f(c \rightarrow\underline{c}c)}{2f(c)}, \tag{6}\]  
\[P(\text{transposition }|\ cc^{\prime})=\frac{f(c^{\prime}\to c^{\prime}c)}{f(c ^{\prime})}. \tag{7}\]  
Note that we divide insertion errors into two distinct categories, whether the character is inserted after the one in question, or before. Both insertion probabilities are collected from the same samples, so we divide them by two. An alternative way would be to collect triplets of characters before the one in question and after, but the probabilities would then be sparse. Nevertheless, our chosen approach covers the so-called \"fat-finger\" errors. We ran some typographical error induction experiments on the original GitHub Corpus and confirmed that our generation method aligns with the original error type distribution. Initially, only about 1% of characters were corrupted, so we scaled our probabilities by a factor of three to be close to the low error rate, as defined in [78]. The final error type distribution and percentage of the corrupted characters for each language are depicted in Figure 1. The amount of generated errors for each language slightly varies because the letter frequencies derived from English differ in other languages. Insertion and substitution errors can result in many different outcomes. The probabilities for specific letters to emerge, given that this type of error occurs at a specific place, are computed by the following equations:  
\[P(c\to c^{\prime}\mid c,\text{substitution})=\frac{f(c\to c^{\prime})}{ \sum\limits_{\xi\in\mathbb{C}}f(c\to\xi)}, \tag{8}\]  
\[P(c\to cc^{\prime}\mid c,\text{insertion after})=\frac{f(c\to cc^{\prime})}{ \sum\limits_{\xi\in\mathbb{C}}f(c\to c\xi)}, \tag{9}\]  
\[P(c\to c^{\prime}c\mid c,\text{insertion before})=\frac{f(c\to c^{\prime}c)}{ \sum\limits_{\xi\in\mathbb{C}}f(c\to c\xi)}. \tag{10}\]  
As mentioned previously, we took the typo statistics from the English dataset and ran on the assumption that typos are based purely on the layout of the keyboard (the proximity of keys, etc. ), so the same typo statistics will be in all the other languages using the QWERTY layout. We did not deal with the extensions of the character sets and keyboard layouts for different languages, as we only introduced typos to the undiacitized versions of the texts, irrespective of the case. We disregarded other possible minor variations in the keyboard layouts as insignificant. For the Croatian, French, Hungarian, and Slovak languages, corresponding to their different keyboard layout families (see Table 1), we remapped the original English QWERTY  
Figure 1: Distribution of generated typographical errors by category (the left vertical axis and stacked bars).