The following pseudocode is executed using the Words dataset. Let `X.Word` and `Y.Word` be "engineering" and "analysis" respectively. At the end of execution, which statements are correct?
```
firstDict = {}, secondDict = {}, commonDict = {}
firstDict = createDict(X)
secondDict = createDict(Y)
foreach key in keys(firstDict) {
if (isKey(secondDict, key)) {
if (firstDict[key] > secondDict[key]) {
commonDict[key] = firstDict[key]
}
else {
commonDict[key] = secondDict[key]
}
}
}
Procedure createDict(Z)
i = 1, x = '', Dict = {}
while (i <= Z.LetterCount) {
x = ith letter of Z.Word
if (not isKey(Dict, x)) {
Dict[x] = 1
}
else {
Dict[x] = Dict[x] + 1
}
i = i + 1
}
return(Dict)
End updateDict
```