Special OpenType Substitution

Hi there,
I’m having trouble finding a solution for a particular Opentype feature I want to implement.

I have two sets of letters:
DEFAULT : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
TWISTED : ABCDEFGKPQRSTVabcdefgkpqrstv
(in my file those are named A.twist, B.twist …etc)

My TWISTED set doesn’t have a full AZaz

Here is what I’m trying to achieve:
I want my default letter to become a .twist letter as soon as possible in a word.
However, here is the difficult part: once my first subsituable letter has been encountered and substituted, no other letter after this one in the word should be substituted.
So only one substitution should ocurre by word.

Example:
ALLES → A.twistLLES
(here first letter in substituted)

NIEUW → NIE.twistUW
(here 3rd letter in substituted because letter N and I don’t have a .twist form)

DIT → D.twistIT
(here first letter in substituted)

WEEKEND → WE.twistEKEND
(here 2nd letter in substituted because letter W doesn’t have a .twist form)

I have ran many tests, but am now short of ideas.
I’d be glad to hear if someone has a solution or can guide me if they have already been through this kind of feature.

And last but not least, this only concerns words starting with caps, nothing applies when words start with lowercase.

Thanks.

To get my first initial letter i use the following :

lookup init{
ignore sub @AllLetters @untwistUC';
sub @untwistUC' by @twistUC;
}init;

But I then struggle when it comes to substituting a letter that isn’t the first one, without having severl .twist letter in my word.