I’d probably start witha precomp, with each letter being on a different frame. Then in the main comp, have a text layer with the word on it, and on each precomp’s time remapping property have an expression with a javascript object, something like:
myTextLetters = { 'A': 0, 'B': : 1, .... };
Where the number corresponds to a frame in a precomp.
Then take my text layer and split it into individual letters:
myString = text.sourceText.split('');
Depending on layer position, use the determine which letter each precomp is denoting and set the time value to the be:
myTextLetters[myString[index]);
I’ve not tried this, and there’s probably something you can do with Essential Graphics to make this smoother and you probably also want a separate expression on the opacity to turn off layers you don’t need. But this might get you started.