An improved (shorter, more efficient) version of the above:
puzzle='''F Y Y H N R D
R L J C I N U
A A W A A H R
N T K L P N E
C I L F S A P
E O G O T P N
H P O L A N D
'''
clues = ['ITALY', 'HOLLAND', 'POLAND', 'SPAIN',
'FRANCE', 'JAPAN', 'TOGO', 'PERU']
puzzle = puzzle.replace(' ','')
length = puzzle.index('\n')+1
letters = [(letter, divmod(index, length))
for index, letter in enumerate (puzzle)]
lines = {}
offsets = {'down':0, 'right down':-1, 'left down':1}
for direction, offset in offsets.items():
lines[direction] = []
for i in range(length):
for j in range(i, len(letters), length + offset):
lines[direction].append(letters[j])
lines[direction].append('\n')
lines['left'] = letters
lines['right'] = [i for i in reversed(letters)]
lines['up'] = [i for i in reversed(lines['down'])]
lines['left up'] = [i for i in reversed(lines['right down'])]
lines['right up'] = [i for i in reversed(lines['left down'])]
for direction, tup in lines.items():
string = ''.join([i[0] for i in tup])
for word in clues:
if word in string:
location = tup[string.index(word)][1]
print word, 'row', location[0]+1, 'column', location[1]+1, direction