
def        __UpperCamelCase					(    lowerCAmelCase__							:    List[str]  ,       lowerCAmelCase__							:    Union[str, Any]  ):
 __a			:  str		    =  [0 for i in range(r + 1  )]
 # nc0 = 1
 __a			:  Union[str, Any]		    =  1
 for i in range(1  ,       n + 1  ):
  # to compute current row from previous row.
  __a			:  int		    =  min(_lowerCamelCase  ,       _lowerCamelCase  )
  while j > 0:
   c[j] += c[j - 1]
   j -= 1
 return c[r]


print(binomial_coefficient(n=10, r=5))


def        __UpperCamelCase					(    lowerCAmelCase__							:    str  ,       lowerCAmelCase__							:    str  ):
 __a			:  Any		    =  len(lowerCAmelCase__  )
 __a			:  Union[str, Any]		    =  []
 for i in range(len(lowerCAmelCase__  ) - pat_len + 1  ):
  __a			:  List[Any]		    =  True
  for j in range(lowerCAmelCase__  ):
   if s[i + j] != pattern[j]:
    __a			:  Union[str, Any]		    =  False
    break
  if match_found:
   position.append(lowerCAmelCase__  )
 return position


if __name__ == "__main__":
      assert naive_pattern_search('ABCDEFG', 'DE') == [3]
      print(naive_pattern_search('ABAAABCDBBABCDDEBCABC', 'ABC'))
