Every state is represented by string of length 2. For example **DL** is used for **Delhi**, **HP** for **Himachal Pradesh**, **UP** for **Uttar Pradesh**, **PB** for **Punjab** etc.

Given a string **str** consisting of uppercase English alphabets only, the task is to find the number of distinct state codes that appear in the string as contiguous sub-strings.

**Examples:**

Input:str = “UPBRC”Output:4

UP, PB, BR and RC are 4 different state codes that appear in string as contiguous sub-strings.

Input:str = “UPUP”Output:2

UP and PU are the only state codes that appear in the given string.

**Approach:** Store every sub-string of length 2 in a set and finally return the size of the set which is the required number of distinct state codes appearing in the given string as sub-strings.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to return the count of` `// distinct state codes` `int` `countDistinctCode(string str)` `{` ` ` `set<string> codes;` ` ` `for` `(` `int` `i = 0; i < str.length() - 1; i++)` ` ` ` ` `// Insert every sub-string` ` ` `// of length 2 in the set` ` ` `codes.insert(str.substr(i, 2));` ` ` ` ` `// Return the size of the set` ` ` `return` `codes.size();` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `string str = ` `"UPUP"` `;` ` ` `cout << countDistinctCode(str);` ` ` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the above approach.` `import` `java.util.*;` ` ` `class` `GFG ` `{` ` ` `// Function to return the count of` `// distinct state codes` `static` `int` `countDistinctCode(String str)` `{` ` ` `Set<String> codes = ` `new` `HashSet<>();` ` ` `for` `(` `int` `i = ` `0` `; i < str.length() - ` `1` `; i++)` ` ` ` ` `// Insert every sub-String` ` ` `// of length 2 in the set` ` ` `codes.add(str.substring(i, i + ` `2` `));` ` ` ` ` `// Return the size of the set` ` ` `return` `codes.size();` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `String str = ` `"UPUP"` `;` ` ` `System.out.println(countDistinctCode(str));` `}` `}` ` ` `// This code has been contributed by 29AjayKumar` |

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to return the count of ` `# distinct state codes ` `def` `countDistinctCode(string): ` ` ` ` ` `codes ` `=` `set` `()` ` ` `for` `i ` `in` `range` `(` `0` `, ` `len` `(string) ` `-` `1` `): ` ` ` ` ` `# Insert every sub-string ` ` ` `# of length 2 in the set ` ` ` `codes.add(string[i:i ` `+` `2` `]) ` ` ` ` ` `# Return the size of the set ` ` ` `return` `len` `(codes) ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `string ` `=` `"UPUP"` ` ` `print` `(countDistinctCode(string)) ` ` ` `# This code is contributed ` `# by Rituraj Jain` |

## C#

`// C# implementation of the above approach. ` `using` `System;` `using` `System.Collections.Generic;` ` ` `class` `GFG ` `{ ` ` ` `// Function to return the count of ` `// distinct state codes ` `static` `int` `countDistinctCode(String str) ` `{ ` ` ` `HashSet<String> codes = ` `new` `HashSet<String>(); ` ` ` `for` `(` `int` `i = 0; i < str.Length - 1; i++) ` ` ` ` ` `// Insert every sub-String ` ` ` `// of length 2 in the set ` ` ` `codes.Add(str.Substring(i,2)); ` ` ` ` ` `// Return the size of the set ` ` ` `return` `codes.Count; ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main(String []args) ` `{ ` ` ` `String str = ` `"UPUP"` `; ` ` ` `Console.Write(countDistinctCode(str)); ` `} ` `} ` ` ` `// This code has been contributed by Arnab Kundu` |

**Output:**

2

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**