new_contents: # Time:  O(sqrt(n))
  # Space: O(1)
  
  # Initially on a notepad only one character 'A' is present.
  # You can perform two operations on this notepad for each step:
  #
  # Copy All: You can copy all the characters present on the notepad (partial copy is not allowed).
  # Paste: You can paste the characters which are copied last time.
  # Given a number n.
  # You have to get exactly n 'A' on the notepad by performing the minimum number of steps permitted.
  # Output the minimum number of steps to get n 'A'.
  #
  # Example 1:
  # Input: 3
  # Output: 3
  # Explanation:
  # Intitally, we have one character 'A'.
  # In step 1, we use Copy All operation.
  # In step 2, we use Paste operation to get 'AA'.
  # In step 3, we use Paste operation to get 'AAA'.
  # Note:
  # The n will be in the range [1, 1000].
  
  class Solution(object):
      def minSteps(self, n):
          """
          :type n: int
          :rtype: int
          """
          result = 0
          p = 2
          # the answer is the sum of prime factors
          while p**2 <= n:
              while n % p == 0:
                  result += p
                  n //= p
              p += 1
          if n > 1:
              result += n
          return result
  
subject: Create 2-keys-keyboard.py