<p>Given a positive integer <code>n</code>, find <em>the smallest integer which has exactly the same digits existing in the integer</em> <code>n</code> <em>and is greater in value than</em> <code>n</code>. If no such positive integer exists, return <code>-1</code>.</p> <p><strong>Note</strong> that the returned integer should fit in <strong>32-bit integer</strong>, if there is a valid answer but it does not fit in <strong>32-bit integer</strong>, return <code>-1</code>.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre><strong>Input:</strong> n = 12 <strong>Output:</strong> 21 </pre><p><strong>Example 2:</strong></p> <pre><strong>Input:</strong> n = 21 <strong>Output:</strong> -1 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= n <= 2<sup>31</sup> - 1</code></li> </ul>