#include <cstdio>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 验证IP地址
     * @param IP string字符串 一个IP地址字符串
     * @return string字符串
     */

    bool checkv4(string& v4IP) {
        v4IP += '.';
        int n = v4IP.size();
        int l = 0, r = 0;
        if (v4IP[0] == '.') return false;
        for (int i = 0; i < n; i++) {
            if ((v4IP[i] >= '0' && v4IP[i] <= '9') || v4IP[i] == '.') continue;
            else return false;
        }
        for (int i = 0; i < n - 1; i++) {
            if (v4IP[i] == '.' && v4IP[i + 1] == '.')  return false;
        }
        while (r < n) {
            if (v4IP[r] == '.') {
                if(r-l>3) return false;
                if (v4IP[l] == '0' && r - l != 1) {
                    return false;
                }
                int tmp = stoi(v4IP.substr(l, r - l));
                if (tmp < 0 || tmp > 255) return false;
                l = r+1;
            }
            r++;
        }
        v4IP.pop_back();
        return true;
    }
    bool checkv6(string& v6IP) {
        v6IP += ':';
        int n = v6IP.size();
        int l = 0, r = 0;
        if (v6IP[0] == ':') return false;
        for (int i = 0; i < n; i++) {
            if ((v6IP[i] >= '0' && v6IP[i] <= '9') || v6IP[i] == ':'||(v6IP[i] >= 'a' && v6IP[i] <= 'f')||(v6IP[i] >= 'A' && v6IP[i] <= 'F')) continue;
            else return false;
        }
        for (int i = 0; i < n - 1; i++) {
            if (v6IP[i] == ':' && v6IP[i + 1] == ':')  return false;
        }
        while (r < n) {
            if (v6IP[r] == ':') {
                if(r-l>4) return false;
                l = r+1;
            }
            r++;
        }
        v6IP.pop_back();
        return true;
    }
    string solve(string IP) {
        // write code here
        int n = IP.size();
        int count1 = 0, count2 = 0;
        for (const char& ch : IP) {
            if (ch == '.') count1++;
            else  if (ch == ':') count2++;
        }
        if (count1 == 3 && count2 == 0) {
            //IPV4
            if (checkv4(IP)) return "IPv4";
        } else if (count1 == 0 && count2 == 7) {
            if (checkv6(IP)) return "IPv6";
        } else return "Neither";
        return "Neither";

    }
};