F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

SUFFIX

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 401    Accepted Submission(s): 150


Problem Description
A string is a list of characters containing only letter ¡®a¡¯ to ¡®z¡¯. For example: ¡°abcdefg¡±, ¡°isun¡± are valid strings. ¡°rocket323¡± is not a valid string.

A suffix of a string suf[i] is the list of characters at positions from i to n-1 (positions are labeled from 0 to n ¨C 1, n is length of the string). For the string ¡°hustacm¡±, suf[0] = ¡°hustacm¡±, suf[1] = ¡°ustacm¡±, suf[3] = ¡°tacm¡±, suf[6] = ¡°m¡±.

The suffix list L of a string is a permutation of numbers from 0 to n-1(n is length of the string), which satisfy the following condition:
suf[L[0]] < suf[L[1]] < suf[L[2]] < ¡­ < suf[L[n-1]].

For the string ¡°aabac¡±, its suffix list is [0, 1, 3, 2, 4].
Here comes the question: Given a string S and a suffix list L, you are to change minimum number of characters of S so that the suffix list of the new string is equal to L.
 

Input
There are multiple cases, for each case:
  The first line is integer n representing the length of the string. (1 <= n <= 500)
  The second line is the string.
  The third line is a permutation of numbers from 0 to n-1.
 

Output
For each case, output the minimum number of characters to change in order to satisfy the condition above, if there is no solution, just output -1.
 

Sample Input
3 abc 0 1 2 3 aab 2 0 1
 

Sample Output
0 2
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-11-22 22:55:17, Gzip enabled