class Solution { fun nextGreaterElement(n: Int): Int { val s = n.toString().toCharArray() var anchor1 = s.lastIndex-1 while(anchor1 >= 0 && s[anchor1] >= s[anchor1+1]) { --anchor1 } if(anchor1 < 0){ return -1 } var anchor2 = s.lastIndex while(anchor2 >= 0 && s[anchor2] <= s[anchor1]) { --anchor2 } s[anchor1] = s[anchor2].also { s[anchor2] = s[anchor1] } ++anchor1 anchor2 = s.lastIndex while(anchor1 < anchor2) { s[anchor1] = s[anchor2].also { s[anchor2] = s[anchor1] } ++anchor1 --anchor2 } val ans = String(s).toLong() return if(ans > Int.MAX_VALUE) -1 else ans.toInt() } }