#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 验证IP地址
# @param IP string字符串 一个IP地址字符串
# @return string字符串
#
class Solution:
    def solve(self , IP: str) -> str:
        # write code here

        if "." in IP: # IPv4情况
            l = IP.split('.')
            if len(l) !=4: # 数组长度不等于4,返回Neither
                return "Neither"
            for i in range(4): 
                if not l[i].isdigit(): # 数组包含非数字,返回Neither
                    return "Neither"
                if i == 0: # IPv4地址第一位情况
                    if l[0][0] =="0" or int(l[0]) not in range(1,256):
                        return "Neither"
                    continue
                if l[i][0] =="0" or int(l[i]) not in range(1,256): # IPv4地址其他位情况
                    return "Neither"
            return "IPv4"

        if ":" in IP:  # IPv6情况
            if not "::" in IP:  #不包含::情况
                l = IP.split(":")
                if len(l)!=8:
                    return "Neither"
                for i in range(len(l)):
                    if len(l[i]) not in range(1,5):
                        return "Neither"
                    for j in l[i]:
                        jo = ord(j)
                        if not ((jo >= ord('0') and jo <= ord('9')) or (jo >= ord('a') and jo <= ord('f')) or (jo >= ord('A') and jo <= ord('F'))):
                            return "Neither"
                return "IPv6"
            return "Neither"