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 = 2Output:3Explanation :

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

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 <bits/stdc++.h>` `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

`<script>` ` ` `// JavaScript Program to Count the number` ` ` `// of Special Strings of a given length N` ` ` `var` `mod = 1000000007;` ` ` `// Function to return count of special strings` ` ` `function` `count_special(n) {` ` ` `// stores the answer for a` ` ` `// particular value of n` ` ` `var` `fib = [...Array(n + 1)];` ` ` `// for n = 0 we have empty string` ` ` `fib[0] = 1;` ` ` `// for n = 1 we have` ` ` `// 2 special strings` ` ` `fib[1] = 2;` ` ` `for` `(` `var` `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` ` ` `// initialise n` ` ` `var` `n = 3;` ` ` `document.write(count_special(n) + ` `"<br>"` `);` ` ` `</script>` |

**Output:**

5