Algorithms and Data Structures

  • Profound Academy

    • Status
      • 1
        Implementation
      • 2
        Bitwise operations
      • 3
        Prefix Sums
      • 4
        Sliding window / Two pointers
      • 5
        Modular Arithmetic
      • 6
        Number Theory
      • 7
        Binary Search
      • 8
        Basic Sorting
      • 9
        Greedy Algorithms
      • 10
        Basic Dynamic Programming
      • 11
        Recursion
      • 12
        Linked LIst
      • 13
        Queue & Stack
      • 14
        Binary tree + BST
      • 15
        Divide & Conquer + Advanced Sorting
      • 16
        Heap
      • 17
        Hashing
      • 18
        Graph Representation
      • 19
        BFS

  • Palindromes

    Strings that read the same from left to right and right to left are called palindromes (radar, madam, or racecar).
    Strings that read the same from left to right and right to left are called palindromes (radar, madam, or racecar).
    Given a string s, you are asked to tell the number of different ways one can obtain a palindrome from s by removing characters. It’s possible to not remove any character and still obtain a palindrome. The sequence of removing characters does not matter.

    Input

    The input contains the string s (1 ≤ |s| ≤ 60) which consists of uppercase Latin letters.

    Output

    The program should print the number of different ways to obtain a palindrome from s.

    Examples

    Input
    Output
    BAOBAB
    22

    Explanation

    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
    1. BAOBAB
     

    Constraints

    Time limit: 1 seconds

    Memory limit: 512 MB

    Output limit: 1 MB

    To check your solution you need to sign in
    Sign in to continue