556\. Next Greater Element III

Medium

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`.

**Example 1:**

**Input:** n = 12

**Output:** 21 

**Example 2:**

**Input:** n = 21

**Output:** -1 

**Constraints:**

*   <code>1 <= n <= 2<sup>31</sup> - 1</code>