: swap-char ( char1 char2 char3 -- char' ) { { [ [ [ = ] 2keep ] dip 4 nrot ] [ [ 2drop ] dip ] } { [ [ swap ] dip [ = ] 2keep 3 nrot [ swap ] 2 ndip ] [ drop swap drop ] } [ 2drop ] } cond ; ! swaps every occurence of char1 with char2 and vice versa in string : swap ( string char1 char2 -- string' ) [ swap-char ] 2curry map ;