I would propose not to create one character long substrings.
if (name.charAt(name.length() - 1) == region.charAt(region.length() - 1)) {
System.out.println(name + " " + region);
}
edit
I don't know why people decided to downvote, but I will add an explanation why I propose not to create one character long substrings.
if (name.substring(name.length() - 1).equals(region.substring(region.length()-1))
substring creates always a new String object. So here two new String objects (one for the last character of both strings) created only for the equality comparison. They are immediatly eligible for next possible garbage collection, as they are later not used.
The relevant part of the substring method return (beginIndex == 0) ? this : new String(value, beginIndex, subLen)
if (name.charAt(name.length() - 1) == region.charAt(region.length() - 1))
charAt returns a reference to the character at that position. So the equality comparision is done on a character of that string instance.
The relevant part of the charAt method return value[index] (value is char value[] in the String instance).