^ vs ~ in git HEAD

I know HEAD currently points to the latest commit in current branch.

I have seen many online blogs some of them are using git reset --soft HEAD~1 and git reset --soft HEAD^1 to reset the codebase

I checked ~ and ^ has no difference. Please help me understand why git support ^ and ~ if they are same

The reference for commit expression operators such as ^ and ~ is the “Specifying Revisions” section of the git rev-parse man page. In general, commit^N means the Nth parent of commit, while commit~N means the commit reached by following the first parent N times. When N = 1, these are coincidentally the same. But when N is not 1, they are different: for example, commit^2 is the second parent of commit, while commit~2 is the first parent of the first parent of commit.