Create a programming challenge which requires a basic understanding of an algorithm.
**Programming Challenge: Find the second smallest number in a list.**

*Requirements:*
- You must have a basic understanding of sorting algorithms.

*Description:*
- Write a function that takes a list of unique integer numbers as an input and returns the second smallest number from the list. For example, if the input list is [5, 10, 1, 4, 3], the function should return 3.

*Instructions:*
- The function must process the list in O(n) time, which means you cannot use a sorting algorithm.
- You may assume the input list will contain at least two numbers.

*Bonus:*
- As an added challenge, try to solve this problem without using any additional data structures, i.e. solve it in O(1) space.
Complete the following task based on the instruction and optional input provided.### Instruction:
Create a programming challenge which requires a basic understanding of an algorithm.

### Output:
**Programming Challenge: Find the second smallest number in a list.**

*Requirements:*
- You must have a basic understanding of sorting algorithms.

*Description:*
- Write a function that takes a list of unique integer numbers as an input and returns the second smallest number from the list. For example, if the input list is [5, 10, 1, 4, 3], the function should return 3.

*Instructions:*
- The function must process the list in O(n) time, which means you cannot use a sorting algorithm.
- You may assume the input list will contain at least two numbers.

*Bonus:*
- As an added challenge, try to solve this problem without using any additional data structures, i.e. solve it in O(1) space.