Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given a positive integer n, find the smallest integer which has exactly the same digits existing in the integer n and is greater in value than n. If no such positive integer exists, return -1.
Note that the returned integer should fit in 32-bit integer, if there is a valid answer but it does not fit in 32-bit integer, return -1.
 
Please complete the following python code precisely:
```python
class Solution:
    def nextGreaterElement(self, n: int) -> int:
```