## Problem Statement

Given a word w, rearrange the letters of w to construct another word s in such a way that, s is lexicographically greater than w. In case of multiple possible answers, find the lexicographically smallest one.## Source Code:

This program uses STL, if you have solved it without using STL comment the source code below.

```
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
char a[1000];
int aa[1000]={0};
cin>>a;
int n = strlen(a);
if(next_permutation(a,a+n)){
cout<<a<<endl;
}else{
cout<<"no answer"<<endl;
}
}
return 0;
}
```

** The above solution is my own code and it may not be the optimal solution or optimal way to approach the problem but it passes all the testcases in Hackerrank. So if you have any optimal approaches feel free to paste the code as the comment below..... :) :) :)