Ответ:

Из условия следует, что учитель из Калининграда преподаёт химию. Поэтому Дмитрий не преподаёт химию, так как он работает не в Калининграде. Он также не преподаёт литературу, значит, Дмитрий преподаёт физику.

Москвич не преподаёт физику, следовательно, Дмитрий не работает в Москве. Иван не работает в Москве, поэтому в Москве работает Степан. Иван и Дмитрий занимают оставшиеся города; поскольку Дмитрий не в Калининграде, он работает в Перми, а Иван — в Калининграде.

Иван преподаёт химию. Степану остаётся литература.

ДругГородПредмет
ИванКалининградХимия
ДмитрийПермьФизика
СтепанМоскваЛитература

Ответ: Иван — химия в Калининграде; Дмитрий — физика в Перми; Степан — литература в Москве.