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`

My Personal Notes arrow_drop_up