# Find Longest Awesome Substring

Given a string s. An awesome substring is a non-empty substring of s such that we can make any number of swaps in order to make it palindrome.

Return the length of the maximum length awesome substring of s.

Example 1:

```Input: s = "3242415"
Output: 5
Explanation: "24241" is the longest awesome substring, we can form the palindrome "24142" with some swaps.
```
Example 2:

```Input: s = "12345678"
Output: 1
```
Example 3:

```Input: s = "213123"
Output: 6
Explanation: "213123" is the longest awesome substring, we can form the palindrome "231132" with some swaps.
```
Example 4:

```Input: s = "00"
Output: 2
```

Constraints:

• 1 <= s.length <= 10^5
• s consists only of digits.

Solution:

```class Solution {
public int longestAwesome(String s) {
int n = s.length();
Map<Integer, Integer> map = new HashMap();
map.put(0, -1);
int mask = 0, max = 1;
for (int i = 0; i < n; i ++) {
mask ^= (1 << s.charAt(i) - '0');
for (int j = 0; j <= 10; j ++) {
int target = j == 10 ? mask : mask ^ (1 << j);
if (map.containsKey(target)) {
max = Math.max(max, i - map.get(target));
}
}
}

return max;
}
}```