# Minimum steps to convert an Array into permutation of numbers from 1 to N

Given an array **arr** of length **N**, the task is to count the minimum number of operations to convert given sequence into a permutation of first **N** natural numbers **(1, 2, …., N)**. In each operation, increment or decrement an element by one.**Examples:**

Input:arr[] = {4, 1, 3, 6, 5}Output:4

Apply decrement operation four times on 6Input :arr[] = {0, 2, 3, 4, 1, 6, 8, 9}Output :7

**Approach**: An efficient approach is to sort the given array and for each element, find the difference between the **arr[i]** and **i**(1 based indexing). Find the sum of all such difference, and this will be the minimum steps required.

Below is the implementation of the above approach:

## CPP

`// C++ program to find minimum number of steps to` `// convert a given sequence into a permutation` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `int` `get_permutation(` `int` `arr[], ` `int` `n)` `{` ` ` `// Sort the given array` ` ` `sort(arr, arr + n);` ` ` `// To store the required minimum` ` ` `// number of operations` ` ` `int` `result = 0;` ` ` `// Find the operations on each step` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `result += ` `abs` `(arr[i] - (i + 1));` ` ` `}` ` ` `// Return the answer` ` ` `return` `result;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `arr[] = { 0, 2, 3, 4, 1, 6, 8, 9 };` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);` ` ` `// Function call` ` ` `cout << get_permutation(arr, n);` ` ` `return` `0;` `}` |

## Java

`// Java program to find minimum number of steps to` `// convert a given sequence into a permutation` `import` `java.util.*;` `class` `GFG{` ` ` `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `static` `int` `get_permutation(` `int` `arr[], ` `int` `n)` `{` ` ` `// Sort the given array` ` ` `Arrays.sort(arr);` ` ` ` ` `// To store the required minimum` ` ` `// number of operations` ` ` `int` `result = ` `0` `;` ` ` ` ` `// Find the operations on each step` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) {` ` ` `result += Math.abs(arr[i] - (i + ` `1` `));` ` ` `}` ` ` ` ` `// Return the answer` ` ` `return` `result;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `arr[] = { ` `0` `, ` `2` `, ` `3` `, ` `4` `, ` `1` `, ` `6` `, ` `8` `, ` `9` `};` ` ` ` ` `int` `n = arr.length;` ` ` ` ` `// Function call` ` ` `System.out.print(get_permutation(arr, n));` ` ` `}` `}` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 program to find minimum number of steps to` `# convert a given sequence into a permutation` `# Function to find minimum number of steps to` `# convert a given sequence into a permutation` `def` `get_permutation(arr, n):` ` ` `# Sort the given array` ` ` `arr ` `=` `sorted` `(arr)` ` ` `# To store the required minimum` ` ` `# number of operations` ` ` `result ` `=` `0` ` ` `# Find the operations on each step` ` ` `for` `i ` `in` `range` `(n):` ` ` `result ` `+` `=` `abs` `(arr[i] ` `-` `(i ` `+` `1` `))` ` ` `# Return the answer` ` ` `return` `result` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `arr` `=` `[` `0` `, ` `2` `, ` `3` `, ` `4` `, ` `1` `, ` `6` `, ` `8` `, ` `9` `]` ` ` `n ` `=` `len` `(arr)` ` ` `# Function call` ` ` `print` `(get_permutation(arr, n))` `# This code is contributed by mohit kumar 29 ` |

## C#

`// C# program to find minimum number of steps to` `// convert a given sequence into a permutation` `using` `System;` ` ` `class` `GFG{` `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `static` `int` `get_permutation(` `int` `[]arr, ` `int` `n)` `{` ` ` `// Sort the given array` ` ` `Array.Sort(arr);` ` ` `// To store the required minimum` ` ` `// number of operations` ` ` `int` `result = 0;` ` ` `// Find the operations on each step` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `result += Math.Abs(arr[i] - (i + 1));` ` ` `}` ` ` `// Return the answer` ` ` `return` `result;` `}` `// Driver Code` `public` `static` `void` `Main()` `{` ` ` `int` `[]arr = { 0, 2, 3, 4, 1, 6, 8, 9 };` ` ` `int` `n = arr.Length;` ` ` `// Function call` ` ` `Console.Write(get_permutation(arr, n));` `}` `}` `// This code is contributed by shivanisinghss2110` |

## Javascript

`<script>` `// javascript program to find minimum number of steps to` `// convert a given sequence into a permutation` `// Function to find minimum number of steps to` `// convert a given sequence into a permutation` `function` `get_permutation(arr , n)` `{` ` ` `// Sort the given array` ` ` `arr.sort();` ` ` ` ` `// To store the required minimum` ` ` `// number of operations` ` ` `var` `result = 0;` ` ` ` ` `// Find the operations on each step` ` ` `for` `(i = 0; i < n; i++) {` ` ` `result += Math.abs(arr[i] - (i + 1));` ` ` `}` ` ` ` ` `// Return the answer` ` ` `return` `result;` `}` ` ` `// Driver code` `var` `arr = [ 0, 2, 3, 4, 1, 6, 8, 9 ];` `var` `n = arr.length;` ` ` `// Function call` `document.write(get_permutation(arr, n));` `// This code is contributed by Amit Katiyar` `</script>` |

**Output:**

7