# Find the length of the longest subsequence with first K alphabets having same frequency

Given string **str** with uppercase characters and an integer **K**, the task is to find the length of the longest subsequence such that the frequency of the first **K** alphabet is the same.

**Examples:**

Input:str = “ACAABCCAB”, K=3Output:6Explanation:One of the possible subsequences is “ACABCB”.

Input:str = “ACAABCCAB”, K=4Output:0Explanation:Since the string does not contain ‘D’, no such subsequence can be obtained.

**Approach:**

Traverse the string and find the least frequent of the first **K** alphabets. Once found, **(frequency of that element) * K **gives the desired result.

Below is the implementation of the above approach:

## C++

`// C++ program to find the longest` `// subsequence with first K` `// alphabets having same frequency` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the` `// length of the longest` `// subsequence with first K` `// alphabets having same frequency` `int` `lengthOfSubsequence(string str,` ` ` `int` `K)` `{` ` ` `// Map to store frequency` ` ` `// of all characters in` ` ` `// the string` ` ` `map<` `char` `,` `int` `> mp;` ` ` `for` `(` `char` `ch : str) {` ` ` `mp[ch]++;` ` ` `}` ` ` ` ` `// Variable to store the` ` ` `// frequency of the least` ` ` `// frequent of first K` ` ` `// alphabets` ` ` `int` `minimum = mp[` `'A'` `];` ` ` `for` `(` `int` `i = 1; i < K; i++) {` ` ` `minimum = min(minimum,` ` ` `mp[(` `char` `)(i + ` `'A'` `)]);` ` ` `}` ` ` ` ` `return` `minimum * K;` `}` `int` `main()` `{` ` ` `string str = ` `"ACAABCCAB"` `;` ` ` `int` `K = 3;` ` ` ` ` `cout << lengthOfSubsequence(str, K);` ` ` `return` `0;` `}` |

## Java

`// Java program to find the longest` `// subsequence with first K alphabets` `// having same frequency` `import` `java.util.*;` `class` `GFG{` `// Function to return the` `// length of the longest` `// subsequence with first K` `// alphabets having same frequency` `static` `int` `lengthOfSubsequence(String str,` ` ` `int` `K)` `{` ` ` ` ` `// Map to store frequency` ` ` `// of all characters in` ` ` `// the string` ` ` `Map<Character, Integer> mp = ` `new` `HashMap<>();` ` ` `for` `(` `char` `ch : str.toCharArray())` ` ` `{` ` ` `mp.put(ch, mp.getOrDefault(ch, ` `0` `) + ` `1` `);` ` ` `}` ` ` `// Variable to store the` ` ` `// frequency of the least` ` ` `// frequent of first K` ` ` `// alphabets` ` ` `int` `minimum = mp.get(` `'A'` `);` ` ` `for` `(` `int` `i = ` `1` `; i < K; i++)` ` ` `{` ` ` `minimum = Math.min(minimum,` ` ` `mp.get((` `char` `)(i + ` `'A'` `)));` ` ` `}` ` ` `return` `minimum * K;` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `String str = ` `"ACAABCCAB"` `;` ` ` `int` `K = ` `3` `;` ` ` ` ` `System.out.println(lengthOfSubsequence(str, K));` `}` `}` `// This code is contributed by offbeat` |

## Python3

`# Python3 program to find the longest` `# subsequence with first K alphabets` `# having same frequency` `from` `collections ` `import` `defaultdict` `# Function to return the` `# length of the longest` `# subsequence with first K` `# alphabets having same frequency` `def` `lengthOfSubsequence(st, K):` ` ` `# Map to store frequency` ` ` `# of all characters in` ` ` `# the string` ` ` `mp ` `=` `defaultdict(` `int` `)` ` ` `for` `ch ` `in` `st:` ` ` `mp[ch] ` `+` `=` `1` ` ` ` ` `# Variable to store the` ` ` `# frequency of the least` ` ` `# frequent of first K` ` ` `# alphabets` ` ` `minimum ` `=` `mp[` `'A'` `]` ` ` ` ` `for` `i ` `in` `range` `(` `1` `, K):` ` ` `minimum ` `=` `min` `(minimum,` ` ` `mp[` `chr` `(i ` `+` `ord` `(` `'A'` `))])` ` ` ` ` `return` `(minimum ` `*` `K)` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` ` ` `st ` `=` `"ACAABCCAB"` ` ` `K ` `=` `3` ` ` ` ` `print` `(lengthOfSubsequence(st, K))` `# This code is contributed by chitranayal` |

## C#

`// C# program to find the longest` `// subsequence with first K alphabets` `// having same frequency` `using` `System;` `using` `System.Collections.Generic;` `class` `GFG{` `// Function to return the` `// length of the longest` `// subsequence with first K` `// alphabets having same frequency` `static` `int` `lengthOfSubsequence(` `string` `str,` ` ` `int` `K)` `{` ` ` ` ` `// Store frequency` ` ` `// of all characters in` ` ` `// the string` ` ` `Dictionary<` `char` `,` ` ` `int` `> mp = ` `new` `Dictionary<` `char` `,` ` ` `int` `>();` ` ` ` ` `foreach` `(` `char` `ch ` `in` `str.ToCharArray())` ` ` `{` ` ` `mp[ch] = mp.GetValueOrDefault(ch, 0) + 1;` ` ` `}` ` ` `// Variable to store the frequency` ` ` `// of the least frequent of first K` ` ` `// alphabets` ` ` `int` `minimum = mp[` `'A'` `];` ` ` `for` `(` `int` `i = 1; i < K; i++)` ` ` `{` ` ` `minimum = Math.Min(minimum,` ` ` `mp[(` `char` `)(i + ` `'A'` `)]);` ` ` `}` ` ` `return` `minimum * K;` `}` `// Driver code` `public` `static` `void` `Main(` `string` `[] args)` `{` ` ` `string` `str = ` `"ACAABCCAB"` `;` ` ` `int` `K = 3;` ` ` ` ` `Console.Write(lengthOfSubsequence(str, K));` `}` `}` `// This code is contributed by rutvik_56` |

## Javascript

`<script>` `// Javascript program to find the longest` `// subsequence with first K` `// alphabets having same frequency` `// Function to return the` `// length of the longest` `// subsequence with first K` `// alphabets having same frequency` `function` `lengthOfSubsequence(str, K)` `{` ` ` `// Map to store frequency` ` ` `// of all characters in` ` ` `// the string` ` ` `var` `mp = ` `new` `Map();` ` ` `str.split(` `''` `).forEach(ch => {` ` ` `if` `(mp.has(ch))` ` ` `mp.set(ch, mp.get(ch)+1)` ` ` `else` ` ` `mp.set(ch, 1)` ` ` `});` ` ` ` ` `// Variable to store the` ` ` `// frequency of the least` ` ` `// frequent of first K` ` ` `// alphabets` ` ` `var` `minimum = mp.get(` `'A'` `);` ` ` `for` `(` `var` `i = 1; i < K; i++) {` ` ` `minimum = Math.min(minimum,` ` ` `mp.get(String.fromCharCode(i + ` `'A'` `.charCodeAt(0))));` ` ` `}` ` ` ` ` `return` `minimum * K;` `}` `var` `str = ` `"ACAABCCAB"` `;` `var` `K = 3;` `document.write( lengthOfSubsequence(str, K));` `</script>` |

**Output:**

6