# Least number of manipulations needed to ensure two strings have identical characters

• Difficulty Level : Easy
• Last Updated : 30 Apr, 2021

Given two strings return the value of least number of manipulations needed to ensure both strings have identical characters, i.e., both string become anagram of each other.

Examples:

```Input : s1 = "aab"
s2 = "aba"
Output :  2
Explanation : string 1 contains 2 a's and 1 b,
also string 2 contains same characters

Input : s1 = "abc"
s2 = "cdd"
Output : 2
Explanation : string 1 contains 1 a, 1 b, 1 c
while string 2 contains 1 c and 2 d's
so there are 2 different characters```

Question Source : Yatra.com Interview Experience | Set 7

The idea is to create a extra count array for both the strings separately and then count the difference in characters.

## C++

 `// C++ program to count least number``// of manipulations to have two strings``// set of same characters``#include ``using` `namespace` `std;` `const` `int` `MAX_CHAR = 26;` `// return the count of manipulations``// required``int` `leastCount(string s1, string s2, ``int` `n)``{``    ``int` `count1[MAX_CHAR] = { 0 };``    ``int` `count2[MAX_CHAR] = { 0 };` `    ``// count the number of different``    ``// characters in both strings``    ``for` `(``int` `i = 0; i < n; i++) {``        ``count1[s1[i] - ``'a'``] += 1;``        ``count2[s2[i] - ``'a'``] += 1;``    ``}` `    ``// check the difference in characters``    ``// by comparing count arrays``    ``int` `res = 0;``    ``for` `(``int` `i = 0; i < MAX_CHAR; i++) {``        ``if` `(count1[i] != 0) {``            ``res += ``abs``(count1[i] - count2[i]);``        ``}``    ``}``    ``return` `res;``}` `// driver program``int` `main()``{``    ``string s1 = ``"abc"``;``    ``string s2 = ``"cdd"``;``    ``int` `len = s1.length();``    ``int` `res = leastCount(s1, s2, len);``    ``cout << res << endl;``    ``return` `0;``}`

## Java

 `// Java program to count least number``// of manipulations to have two``// strings set of same characters``import` `java.io.*;` `public` `class` `GFG {` `    ``static` `int` `MAX_CHAR = ``26``;` `    ``// return the count of manipulations``    ``// required``    ``static` `int` `leastCount(String s1,``                        ``String s2, ``int` `n)``    ``{``        ` `        ``int``[] count1 = ``new` `int``[MAX_CHAR];``        ``int``[] count2 = ``new` `int``[MAX_CHAR];` `        ``// count the number of different``        ``// characters in both strings``        ``for` `(``int` `i = ``0``; i < n; i++)``        ``{``            ``count1[s1.charAt(i) - ``'a'``] += ``1``;``            ``count2[s2.charAt(i) - ``'a'``] += ``1``;``        ``}` `        ``// check the difference in characters``        ``// by comparing count arrays``        ``int` `res = ``0``;``        ` `        ``for` `(``int` `i = ``0``; i < MAX_CHAR; i++)``        ``{``            ``if` `(count1[i] != ``0``) {``                ``res += Math.abs(count1[i]``                                 ``- count2[i]);``            ``}``        ``}``        ` `        ``return` `res;``    ``}` `    ``// driver program``    ``static` `public` `void` `main(String[] args)``    ``{``        ``String s1 = ``"abc"``;``        ``String s2 = ``"cdd"``;``        ``int` `len = s1.length();``        ``int` `res = leastCount(s1, s2, len);``        ` `        ``System.out.println(res);``    ``}``}` `// This code is contributed by vt_m.`

## Python3

 `# Python3 program to count least number``# of manipulations to have two strings``# set of same characters``MAX_CHAR ``=` `26` `# return the count of manipulations``# required``def` `leastCount(s1, s2, n):` `    ``count1 ``=` `[``0``] ``*` `MAX_CHAR``    ``count2 ``=` `[``0``] ``*` `MAX_CHAR` `    ``# count the number of different``    ``# characters in both strings``    ``for` `i ``in` `range` `( n):``        ``count1[``ord``(s1[i]) ``-` `ord``(``'a'``)] ``+``=` `1``        ``count2[``ord``(s2[i]) ``-` `ord``(``'a'``)] ``+``=` `1` `    ``# check the difference in characters``    ``# by comparing count arrays``    ``res ``=` `0``    ``for` `i ``in` `range` `(MAX_CHAR):``        ``if` `(count1[i] !``=` `0``):``            ``res ``+``=` `abs``(count1[i] ``-` `count2[i])``    ` `    ``return` `res` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``s1 ``=` `"abc"``    ``s2 ``=` `"cdd"``    ``l ``=` `len``(s1)``    ``res ``=` `leastCount(s1, s2, l)``    ``print` `(res)` `# This code is contributed by ita_c`

## C#

 `// C# program to count least number``// of manipulations to have two strings``// set of same characters``using` `System;` `public` `class` `GFG {` `    ``static` `int` `MAX_CHAR = 26;` `    ``// return the count of manipulations``    ``// required``    ``static` `int` `leastCount(``string` `s1,``                        ``string` `s2, ``int` `n)``    ``{``        ` `        ``int``[] count1 = ``new` `int``[MAX_CHAR];``        ``int``[] count2 = ``new` `int``[MAX_CHAR];` `        ``// count the number of different``        ``// characters in both strings``        ``for` `(``int` `i = 0; i < n; i++)``        ``{``            ``count1[s1[i] - ``'a'``] += 1;``            ``count2[s2[i] - ``'a'``] += 1;``        ``}` `        ``// check the difference in characters``        ``// by comparing count arrays``        ``int` `res = 0;``        ``for` `(``int` `i = 0; i < MAX_CHAR; i++)``        ``{``            ``if` `(count1[i] != 0) {``                ``res += Math.Abs(count1[i]``                                ``- count2[i]);``            ``}``        ``}``        ` `        ``return` `res;``    ``}` `    ``// driver program``    ``static` `public` `void` `Main()``    ``{``        ``string` `s1 = ``"abc"``;``        ``string` `s2 = ``"cdd"``;``        ``int` `len = s1.Length;``        ``int` `res = leastCount(s1, s2, len);``        ``Console.WriteLine(res);``    ``}``}` `// This code is contributed by vt_m.`

## Javascript

 ``

Output:

`2`

This article is contributed by Mandeep Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.