Has/have/had (when used as auxiliary/helping verbs) are followed by the past participle form of the verb. This makes options b) and c) incorrect as they are the base forms of verbs.
'Promised' (past and past participle form of verb) means to assure someone that one will definitely do something or that something will happen. It doesn't fit in the blank meaningfully.
'Shifted' (past and past participle form of verb) means move or cause to move from one place to another, especially over a small distance.
'Stuffed' (past and past participle form of verb) means to fill by packing things in.
The sentence gives the meaning that he had filled his pocket with stones. 'Stuffed' gives the same meaning.
Hence, option e) is correct.
Note: Auxiliary verb: A verb that gives grammatical information that is not given by the main verb of a sentence. It supports the main verb. Auxiliary verbs help to form the various tenses, moods, and voices of other verbs. The principal ones are be, do, and have. Example: She will sing a song tomorrow. Here, 'will' is the auxiliary verb that supports the main verb 'sing'.
Participle: A word formed from a verb (e.g. going, gone, being, been) and used as an adjective (e.g. working woman, burnt toast) or a noun (e.g. good breeding). In English, participles are also used to make compound verb forms (e.g. is going, has been). Consider the sentences given below:
Dancing at the party, the women fell on the ground.
Encouraged by her parents, Rita went on to pursue her passion.
The highlighted word in the first sentence is of the form Verb + ing and is used as a present participle. It is used to denote an action that is going on or incomplete or imperfect.
The highlighted word in the second sentence is of the form verb + ed. It is used as a past participle. It denotes the completed action or state of the thing spoken of.
A past participle ends with the following: -ed, -d, -t, -en, or -n.
One should take great care and never get confused between a gerund and a present participle. They use the same forms but perform different functions: a gerund is a verbal noun, while a present participle is a verbal adjective.