input: def get_lexicographically_smallest_string_after_swaps(s: str) -> str:
      """
      Given a string s containing digits, return the smallest possible
      lexicographical string that can be obtained by swapping adjacent
      digits with the same parity at most once.
  
      Two digits have the same parity if both are odd or both are even. For example, 1 and 3, or 2 and 6, have the same parity, while 3 and 4 do not.
  
      Examples:
      >>> s = "45320"
      "43520"
      >>> s = "001"
      "001"
  
      Constraints:
      2 <= s.length <= 100
      s contains only numeric characters.
      """
output:     
      even_digits = []
      odd_digits = []
  
      # Separate even and odd digits
      for char in s:
          if int(char) % 2 == 0:
              even_digits.append(char)
          else:
              odd_digits.append(char)
      
      # Sort the lists to get the smallest possible digits first
      even_digits.sort()
      odd_digits.sort()
  
      result = []
      even_index, odd_index = 0, 0
  
      # Reconstruct the string by placing smallest available digit of the same parity
      for char in s:
          if int(char) % 2 == 0:
              result.append(even_digits[even_index])
              even_index += 1
          else:
              result.append(odd_digits[odd_index])
              odd_index += 1
  
      return ''.join(result)
  