Related Articles
Smallest number by rearranging digits of a given number
• Difficulty Level : Medium
• Last Updated : 25 Mar, 2021

Find the Smallest number (Not leading Zeros) which can be obtained by rearranging the digits of given number.
Examples:

```Input: n = 846903
Output: 304689

Input: n = 55010
Output: 10055```

Steps to find the smallest number.

1. Count the frequency of each digit in the number.
2. Place the smallest digit (except 0) at the left most of required number.
and decrement the frequency of that digit by 1.
3. Place all remaining digits in ascending order from left to right.

This solution is based on counting sort.

## C++

 `// C++ program for finding smallest number``// from digits of given number``#include``using` `namespace` `std;` `// function to find the smallest number``int` `smallest(``int` `num)``{``    ``// initialize frequency of each digit to Zero``    ``int` `freq = {0};` `    ``// count frequency of each digit in the number``    ``while` `(num)``    ``{``        ``int` `d = num % 10; ``// extract last digit``        ``freq[d]++; ``// increment counting``        ``num = num / 10; ``//remove last digit``    ``}` `    ``// Set the LEFTMOST digit to minimum expect 0``    ``int` `result = 0;``    ``for` `(``int` `i = 1 ; i <= 9 ; i++)``    ``{``        ``if` `(freq[i])``        ``{``            ``result = i;``            ``freq[i]--;``            ``break``;``        ``}``    ``}` `    ``// arrange all remaining digits``    ``// in ascending order``    ``for` `(``int` `i = 0 ; i <= 9 ; i++)``        ``while` `(freq[i]--)``            ``result = result * 10 + i;` `    ``return` `result;``}` `// Driver Program``int` `main()``{``    ``int` `num = 570107;``    ``cout << smallest(num);``    ``return` `0;``}`

## Java

 `// Java program for finding smallest number``// from digits of given number``public` `class` `GFG {` `    ``// function to find the smallest number``    ``static` `int` `smallest(``int` `num)``    ``{``        ``// initialize frequency of each digit to Zero``        ``int``[] freq = ``new` `int``[``10``];``     ` `        ``// count frequency of each digit in the number``        ``while` `(num > ``0``)``        ``{``            ``int` `d = num % ``10``; ``// extract last digit``            ``freq[d]++; ``// increment counting``            ``num = num / ``10``; ``//remove last digit``        ``}``     ` `        ``// Set the LEFTMOST digit to minimum expect 0``        ``int` `result = ``0``;``        ``for` `(``int` `i = ``1` `; i <= ``9` `; i++)``        ``{``            ``if` `(freq[i] != ``0``)``            ``{``                ``result = i;``                ``freq[i]--;``                ``break``;``            ``}``        ``}``     ` `        ``// arrange all remaining digits``        ``// in ascending order``        ``for` `(``int` `i = ``0` `; i <= ``9` `; i++)``            ``while` `(freq[i]-- != ``0``)``                ``result = result * ``10` `+ i;``     ` `        ``return` `result;``    ``}``     ` `    ``// Driver Program``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `num = ``570107``;``        ``System.out.println(smallest(num));``    ``}``}``// This code is contributed by Sumit Ghosh`

## Python

 `# Function to find the smallest number``def` `smallest(lst):``    ` `    ``# Here i is index and n is the number of the list``    ``for` `i,n ``in` `enumerate``(lst):``        ` `        ``# Checking for the first non-zero digit in the sorted list``        ``if` `n !``=` `'0'``:``            ` `            ``# Remove and store the digit from the lst``            ``tmp ``=` `lst.pop(i)``            ``break``    ` `    ``# Place the first non-zero digit at the starting``    ``# and return the final number``    ``return` `str``(tmp) ``+` `''.join(lst)`  `# Driver program``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``# Converting the given numbers into string to form a list``    ``lst ``=` `list``(``str``(``570107``))``    ``lst.sort()``    ` `    ``# Calling the function using the above list``    ``print` `smallest(lst)``    ` `# This code is contributed by Mahendra Yadav`

## C#

 `// C# program for finding smallest``// number from digits of given``// number``using` `System;` `public` `class` `GFG {` `    ``// function to find the smallest``    ``// number``    ``static` `int` `smallest(``int` `num)``    ``{``        ` `        ``// initialize frequency of``        ``// each digit to Zero``        ``int``[] freq = ``new` `int``;``    ` `        ``// count frequency of each``        ``// digit in the number``        ``while` `(num > 0)``        ``{``            ` `            ``// extract last digit``            ``int` `d = num % 10;``            ` `            ``// increment counting``            ``freq[d]++;``            ` `            ``//remove last digit``            ``num = num / 10;``        ``}``    ` `        ``// Set the LEFTMOST digit to``        ``// minimum expect 0``        ``int` `result = 0;``        ``for` `(``int` `i = 1 ; i <= 9 ; i++)``        ``{``            ``if` `(freq[i] != 0)``            ``{``                ``result = i;``                ``freq[i]--;``                ``break``;``            ``}``        ``}``    ` `        ``// arrange all remaining digits``        ``// in ascending order``        ``for` `(``int` `i = 0 ; i <= 9 ; i++)``            ``while` `(freq[i]-- != 0)``                ``result = result * 10 + i;``    ` `        ``return` `result;``    ``}``    ` `    ``// Driver Program``    ``public` `static` `void` `Main()``    ``{``        ``int` `num = 570107;``        ``Console.WriteLine(smallest(num));``    ``}``}` `// This code is contributed by anuj_67.`

## PHP

 ` 0)``        ``{``            ``\$result` `= ``\$result` `* 10 + ``\$i``;``            ``\$freq``[``\$i``] -= 1;``        ``}` `    ``return` `\$result``;``}` `// Driver Code``\$num` `= 570107;``echo` `smallest(``\$num``);` `// This code is contributed by mits``?>`

## Javascript

 ``

Output:

`100577`

Another Approach:Find smallest permutation of given number
This article is contributed by Ajay Kumar Agrahari(aJy aGr). If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.