class Solution {
public:
int nextGreaterElement(int n) {
string s = to_string(n);
if (s.length() == 1) {
return -1;
}
//finding first dip
int i=s.length()-2;
while(i>=0 && s[i]>=s[i+1]){
i--;
}
//no dip found
if(i==-1){
return -1;
}
//finding just greater than ith index element
int k=s.length()-1;
while(s[i]>=s[k]){
k--;
}
// swaping ith element when we found just greater element
char temp=s[i];
s[i]=s[k];
s[k]=temp;
string res="";
for(int j=0;j<=i;j++){
res+=s[j];
}
for(int j=s.length()-1;j>i;j--){
res+=s[j];
}
long next = stol(res);
return next;
}
};