import
java.util.*;
public
class
Main {
public
static
boolean
checkIPv4(String s)
{
int
cnt =
0
;
for
(
int
i =
0
; i < s.length(); i++) {
if
(s.charAt(i) ==
'.'
) {
cnt++;
}
}
if
(cnt !=
3
) {
return
false
;
}
ArrayList<String> tokens =
new
ArrayList<String>();
StringTokenizer check1
=
new
StringTokenizer(s,
"."
);
while
(check1.hasMoreTokens()) {
tokens.add(check1.nextToken());
}
if
(tokens.size() !=
4
) {
return
false
;
}
for
(
int
i =
0
; i < tokens.size(); i++) {
int
num =
0
;
if
(tokens.get(i).equals(
"0"
)) {
continue
;
}
if
(tokens.get(i).length() ==
0
) {
return
false
;
}
for
(
int
j =
0
; j < tokens.get(i).length();
j++) {
if
(tokens.get(i).charAt(j) >
'9'
|| tokens.get(i).charAt(j) <
'0'
) {
return
false
;
}
num *=
10
;
num += tokens.get(i).charAt(j) -
'0'
;
if
(num ==
0
) {
return
false
;
}
}
if
(num >
255
|| num <
0
) {
return
false
;
}
}
return
true
;
}
public
static
boolean
checkHex(String s)
{
int
n = s.length();
for
(
int
i =
0
; i < n; i++) {
char
ch = s.charAt(i);
if
((ch <
'0'
|| ch >
'9'
)
&& (ch <
'A'
|| ch >
'F'
)
&& (ch <
'a'
|| ch >
'f'
)) {
return
false
;
}
}
return
true
;
}
public
static
boolean
checkIPv6(String s)
{
int
cnt =
0
;
for
(
int
i =
0
; i < s.length(); i++) {
if
(s.charAt(i) ==
':'
) {
cnt++;
}
}
if
(cnt !=
7
) {
return
false
;
}
ArrayList<String> tokens =
new
ArrayList<String>();
StringTokenizer check1
=
new
StringTokenizer(s,
":"
);
while
(check1.hasMoreTokens()) {
tokens.add(check1.nextToken());
}
if
(tokens.size() !=
8
) {
return
false
;
}
for
(
int
i =
0
; i < tokens.size(); i++) {
int
len = tokens.get(i).length();
if
(!checkHex(tokens.get(i)) || len >
4
|| len <
1
)
return
false
;
}
return
true
;
}
public
static
void
checkIPAddress(String s)
{
if
(checkIPv4(s))
System.out.println(
"IPv4"
);
else
if
(checkIPv6(s))
System.out.println(
"IPv6"
);
else
System.out.println(
"Invalid"
);
}
public
static
void
main(String args[])
{
String s =
"192.168.0.1"
;
checkIPAddress(s);
}
}