

'''simple docstring'''

def 						__magic_name__       (							__UpperCAmelCase							,	__UpperCAmelCase      )						->					bool:

   '''simple docstring'''







   __SCREAMING_SNAKE_CASE      							=       len(__lowerCAmelCase      ) + 1
   __SCREAMING_SNAKE_CASE      							=       len(__lowerCAmelCase      ) + 1

   # dp is a 2d matrix where dp[i][j] denotes whether prefix string of
   # length i of input_string matches with prefix string of length j of
   # given pattern.
   # "dp" stands for dynamic programming.
   __SCREAMING_SNAKE_CASE      							=       [[0 for i in range(__lowerCAmelCase      )] for j in range(__lowerCAmelCase      )]

   # since string of zero length match pattern of zero length
   __SCREAMING_SNAKE_CASE      							=       1

   # since pattern of zero length will never match with string of non-zero length
   for i in range(1							,	__lowerCAmelCase      ):
      __SCREAMING_SNAKE_CASE      							=       0

   # since string of zero length will match with pattern where there
   # is at least one * alternatively
   for j in range(1							,	__lowerCAmelCase      ):
      __SCREAMING_SNAKE_CASE      							=       dp[0][j - 2] if pattern[j - 1] == """*""" else 0

   # now using bottom-up approach to find for all remaining lengths
   for i in range(1							,	__lowerCAmelCase      ):
      for j in range(1							,	__lowerCAmelCase      ):
         if input_string[i - 1] == pattern[j - 1] or pattern[j - 1] == ".":
            __SCREAMING_SNAKE_CASE      							=       dp[i - 1][j - 1]

         elif pattern[j - 1] == "*":
            if dp[i][j - 2] == 1:
               __SCREAMING_SNAKE_CASE      							=       1
            elif pattern[j - 2] in (input_string[i - 1], "."):
               __SCREAMING_SNAKE_CASE      							=       dp[i - 1][j]
            else:
               __SCREAMING_SNAKE_CASE      							=       0
         else:
            __SCREAMING_SNAKE_CASE      							=       0

   return bool(dp[-1][-1]      )


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    # inputing the strings
    # input_string = input("input a string :")
    # pattern = input("input a pattern :")

    a        =						"aab"
    a        =						"c*a*b"

    # using function to check whether given string matches the given pattern
    if match_pattern(input_string, pattern):
        print(F'''{input_string} matches the given pattern {pattern}''')
    else:
        print(F'''{input_string} does not match with the given pattern {pattern}''')












'''simple docstring'''

from ...utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_torch_available,
    is_transformers_available,
)


try:
    if not (is_transformers_available() and is_torch_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
    from .multicontrolnet import MultiControlNetModel
    from .pipeline_controlnet import StableDiffusionControlNetPipeline
    from .pipeline_controlnet_imgaimg import StableDiffusionControlNetImgaImgPipeline
    from .pipeline_controlnet_inpaint import StableDiffusionControlNetInpaintPipeline


if is_transformers_available() and is_flax_available():
    from .pipeline_flax_controlnet import FlaxStableDiffusionControlNetPipeline





