Related Articles
Count the number of Special Strings of a given length N
• Difficulty Level : Medium
• Last Updated : 28 Apr, 2021

Given the length N of the string, we have to find the number of special strings of length N.
A string is called a special string if it consists only of lowercase letters a and b and there is at least one b between two a’s in the string. Since the number of strings may be very large, therefore print it modulo 10^9+7.
Examples:

Input: N = 2
Output:
Explanation :
The number of special string so length 2 are 3 i.e. “ab”, “ba”, “bb”
Input: N = 3
Output:
Explanation:
The number of special string so length 3 are 5 i.e. “abb”, “aba”, “bab”, “bba”, “bbb”

Approach:
To solve the problem mentioned above, the first observation is if the integer N is 0 then there can only be an empty string as the answer, if N is 1 then there can be two string “a” or “b” as an answer but if the value of N is greater than 1 then the answer is equal to the sum of previous two terms. Now to find the count of special strings we run a loop and for each integer i count of the special string of length i is equal to the sum of the count of special strings of length i-1 and count of special strings of length i-2. Store the value of each integer in an array and return the required answer.
Below is the implementation of the above approach:

## C++

 `// C++ Program to Count the number``// of Special Strings of a given length N``#include ``using` `namespace` `std;``#define mod 1000000007` `// Function to return count of special strings``long` `count_special(``long` `n)``{``    ``// stores the answer for a``    ``// particular value of n``    ``long` `fib[n + 1];` `    ``// for n = 0 we have empty string``    ``fib[0] = 1;` `    ``// for n = 1 we have``    ``// 2 special strings``    ``fib[1] = 2;` `    ``for` `(``int` `i = 2; i <= n; i++) {` `        ``// calculate count of special string of length i``        ``fib[i] = (fib[i - 1] % mod + fib[i - 2] % mod) % mod;``    ``}` `    ``// fib[n] stores the count``    ``// of special strings of length n``    ``return` `fib[n];``}` `// Driver code``int` `main()``{` `    ``// initialise n``    ``long` `n = 3;` `    ``cout << count_special(n) << endl;` `    ``return` `0;``}`

## Java

 `// Java program to count the number of``// special strings of a given length N``import` `java.util.*;` `class` `GFG{``    ` `static` `final` `int` `mod = ``1000000007``;` `// Function to return count of``// special Strings``static` `int` `count_special(``int` `n)``{``    ` `    ``// Stores the answer for a``    ``// particular value of n``    ``int` `[]fib = ``new` `int``[n + ``1``];` `    ``// For n = 0 we have empty String``    ``fib[``0``] = ``1``;` `    ``// For n = 1 we have``    ``// 2 special Strings``    ``fib[``1``] = ``2``;` `    ``for``(``int` `i = ``2``; i <= n; i++)``    ``{``       ` `       ``// Calculate count of special``       ``// String of length i``       ``fib[i] = (fib[i - ``1``] % mod +``                 ``fib[i - ``2``] % mod) % mod;``    ``}` `    ``// fib[n] stores the count of``    ``// special Strings of length n``    ``return` `fib[n];``}` `// Driver code``public` `static` `void` `main(String[] args)``{` `    ``// Initialise n``    ``int` `n = ``3``;` `    ``System.out.print(count_special(n) + ``"\n"``);``}``}` `// This code is contributed by sapnasingh4991`

## Python3

 `# Python3 program to count the number``# of special strings of a given length N``mod ``=` `1000000007` `# Function to return count of``# special strings``def` `count_special(n):``    ` `    ``# Stores the answer for a``    ``# particular value of n``    ``fib ``=` `[``0` `for` `i ``in` `range``(n ``+` `1``)]` `    ``# For n = 0 we have empty string``    ``fib[``0``] ``=` `1` `    ``# For n = 1 we have``    ``# 2 special strings``    ``fib[``1``] ``=` `2` `    ``for` `i ``in` `range``(``2``, n ``+` `1``, ``1``):``        ` `        ``# Calculate count of special``        ``# string of length i``        ``fib[i] ``=` `(fib[i ``-` `1``] ``%` `mod ``+``                  ``fib[i ``-` `2``] ``%` `mod) ``%` `mod` `    ``# fib[n] stores the count``    ``# of special strings of length n``    ``return` `fib[n]` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``# Initialise n``    ``n ``=` `3` `    ``print``(count_special(n))` `# This code is contributed by Bhupendra_Singh`

## C#

 `// C# program to count the number of``// special strings of a given length N``using` `System;``class` `GFG{``    ` `const` `int` `mod = 1000000007;` `// Function to return count of``// special Strings``static` `int` `count_special(``int` `n)``{``    ` `    ``// Stores the answer for a``    ``// particular value of n``    ``int` `[]fib = ``new` `int``[n + 1];` `    ``// For n = 0 we have empty String``    ``fib[0] = 1;` `    ``// For n = 1 we have``    ``// 2 special Strings``    ``fib[1] = 2;` `    ``for``(``int` `i = 2; i <= n; i++)``    ``{``        ` `        ``// Calculate count of special``        ``// String of length i``        ``fib[i] = (fib[i - 1] % mod +``                  ``fib[i - 2] % mod) % mod;``    ``}` `    ``// fib[n] stores the count of``    ``// special Strings of length n``    ``return` `fib[n];``}` `// Driver code``public` `static` `void` `Main()``{` `    ``// Initialise n``    ``int` `n = 3;` `    ``Console.Write(count_special(n) + ``"\n"``);``}``}` `// This code is contributed by Nidhi_biet`

## Javascript

 ``
Output:
`5`

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.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up