For a dataset that size, the easiest way is possibly just to expand data briefly to a version with each character in a separate observation. Your question leaves open your rules on lower and upper case, but I'll take your example "School" to "chloos" literally as implying working with lower case.
clear
input str9 sandbox
"School"
"sort"
"akramabad"
end
gen length = length(sandbox)
gen id = _n
expand length
bysort id : gen char = substr(lower(sandbox), _n, 1)
sort id char
bysort id (char) : gen newbox = char[1]
by id: replace newbox = newbox[_n-1] + char if _n > 1
by id: replace newbox = newbox[_N]
by id: keep if _n == 1
drop length char
list
+----------------------------+
| sandbox id newbox |
|----------------------------|
1. | School 1 chloos |
2. | sort 2 orst |
3. | akramabad 3 aaaabdkmr |
+----------------------------+
Creating separate variables for each letter and sorting them within observations would also seem possible.
dabamarkaisakramabadreversed, not alphabetised.