def        lowerCAmelCase_			(					__A							)					->    Optional[int]:







						'''simple docstring'''


						UpperCAmelCase__								=  0

						# if input_string is "aba" than new_input_string become "a|b|a"
						UpperCAmelCase__								=  ""
						UpperCAmelCase__								=  ""

						# append each character + "|" in new_string for range(0, length-1)
						for i in input_string[: len(A__							) - 1]:
												new_input_string += i + "|"
						# append last character
						new_input_string += input_string[-1]

						# we will store the starting and ending of previous furthest ending palindromic
						# substring
						UpperCAmelCase__		,				UpperCAmelCase__								=  0, 0

						# length[i] shows the length of palindromic substring with center i
						UpperCAmelCase__								=  [1 for i in range(len(A__							)							)]

						# for each character in new_string find corresponding palindromic string
						UpperCAmelCase__								=  0
						for j in range(len(A__							)							):
												UpperCAmelCase__								=  1 if j > r else min(length[l + r - j] // 2,  r - j + 1							)
												while (
												    j - k >= 0
												    and j + k < len(A__							)
												    and new_input_string[k + j] == new_input_string[j - k]
												):
																		k += 1

												UpperCAmelCase__								=  2 * k - 1

												# does this string is ending after the previously explored end (that is r) ?
												# if yes the update the new r to the last index of this
												if j + k - 1 > r:
																		UpperCAmelCase__								=  j - k + 1  # noqa: E741
																		UpperCAmelCase__								=  j + k - 1

												# update max_length and start position
												if max_length < length[j]:
																		UpperCAmelCase__								=  length[j]
																		UpperCAmelCase__								=  j

																		 # create that string
						UpperCAmelCase__								=  new_input_string[start - max_length // 2 : start + max_length // 2 + 1]
						for i in s:
												if i != "|":
																		output_string += i

						return output_string


if __name__ == "__main__":
						import doctest

						doctest.testmod()




from __future__ import annotations




def        lowerCAmelCase_			(					__A,  __A,  __A,  )					->    tuple:







      '''simple docstring'''


      if (electron_conc, hole_conc, intrinsic_conc).count(0							) != 1:
            raise ValueError("You cannot supply more or less than 2 values"							)
      elif electron_conc < 0:
            raise ValueError("Electron concentration cannot be negative in a semiconductor"							)
      elif hole_conc < 0:
            raise ValueError("Hole concentration cannot be negative in a semiconductor"							)
      elif intrinsic_conc < 0:
            raise ValueError(
                "Intrinsic concentration cannot be negative in a semiconductor"							)
      elif electron_conc == 0:
            return (
                "electron_conc",
                intrinsic_conc**2 / hole_conc,
            )
      elif hole_conc == 0:
            return (
                "hole_conc",
                intrinsic_conc**2 / electron_conc,
            )
      elif intrinsic_conc == 0:
            return (
                "intrinsic_conc",
                (electron_conc * hole_conc) ** 0.5,
            )
      else:
            return (-1, -1)


if __name__ == "__main__":
      import doctest

      doctest.testmod()



